C#的
泛型是c#2.0的一个新增加的特性,它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。通过知道使用泛型定义的变量的类型限制。
编译器可以在一个高得多的程度上验证类型假设,所以泛型提高了程序的类型安全。泛型类和泛型方法同时具备可重用性、类型安全和效率,这是非泛型类和非泛型方法无法具备的。泛型通常用与集合以及作用于集合的方法一起使用。
扩展资料
使用泛型GenericList
classTestGenericList{
staticvoidMain(){
//intisthetypeargument
GenericList
for(intx=0;x<10;x++)
{
list.AddHead(x);
}
foreach(intiinlist)
{
System.Console.Write(i+"");
}
System.Console.WriteLine("\nDone");
}
}
参考资料来源:百度百科—泛型
在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"));
泛型+模板