标签:
定义:
为使用c#语言编写面向对象程序增加了极大的效率和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。
1.List<T>泛型
List<int> ll = new List<int>();
ll.Add(3);
ll.Add(4);
//ll[0] = 1; 不能用这种声明方法
List<string> ss = new List<string>() { "jing", "dong", "yun" };
foreach (var item in ss)
{
Console.WriteLine(item);
}
for (int j = 0; j < 3; j++)
{
Console.WriteLine(ss[j]);
}
泛型也是一样。in 关键字表示可能逆变,out 关键字表示可能协变。
5种泛型约束
1.基类约束【类型参数必须是BaseClass或者是其子类】
class A<T> where T : BaseClass { }
2.接口约束【类型参数必须是实现了IPrint接口的类型】
class B<T> where T : IPrint { }
3.构造器约束【类型参数必须是有一个无参的构造器的类型】
class C<T> where T : new( ) { }
4.值类型 / 引用类型约束【类型参数必须是引用类型】
class D<T> where T : class { }
5.值类型 / 引用类型约束【类型参数必须是值类型】
class E<T> where T : strct { }
标签:
原文地址:http://www.cnblogs.com/weloveshare/p/5294807.html