C#的<T>是什么

2024-12-28 15:22:39
推荐回答(3个)
回答1:

C#的是泛型。

泛型是c#2.0的一个新增加的特性,它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。通过知道使用泛型定义的变量的类型限制。

编译器可以在一个高得多的程度上验证类型假设,所以泛型提高了程序的类型安全。泛型类和泛型方法同时具备可重用性、类型安全和效率,这是非泛型类和非泛型方法无法具备的。泛型通常用与集合以及作用于集合的方法一起使用。

扩展资料

使用泛型GenericList类来创建整数列表

classTestGenericList{

staticvoidMain(){

//intisthetypeargument

GenericListlist=newGenericList();

for(intx=0;x<10;x++)

{

list.AddHead(x);

}

foreach(intiinlist)

{

System.Console.Write(i+"");

}

System.Console.WriteLine("\nDone");

}

}

参考资料来源:百度百科—泛型

回答2:

在C#中,他是泛型,与C++中的模板类似。

有了泛型,可减少object对象的使用,对object进行装箱/拆箱时,性能不及泛型。

 1. 下面是一个简单的泛型方法及其使用

  • 创建一个TestObj类

    public class TestObj
    {
        public override string ToString()
        {
            return "我是TestObj";
        }
    }
  • 书写泛型方法:

        public static string SayText1(T item)
        {
            if (item is TestObj)
            {
                return item.ToString();
            }
            else
            {
                return "no support!";
            }
        }
  • 调用泛型方法:

    Console.WriteLine(SayText1(new TestObj()));
    Console.WriteLine(SayText1("1"));

2. 写带约束的泛型方法

  • 使TestObj类继承接口ITestObj:

    public interface ITestObj
    {

    }

    public class TestObj : ITestObj
    {
        public override string ToString()
        {
            return "我是TestObj";
        }
    }
  • 书写带约束的泛型方法

        public static string SayText2(T item) where T : ITestObj
        {
            //...
            return "some thing";
        }
  • 调用该方法

    Console.WriteLine(SayText2(new TestObj()));
    //下面的调用会报错,由于字符串"1"没有继承接口ITestObj
    Console.WriteLine(SayText2("1"));

回答3:

泛型+模板