1.为什么要使用泛型
1.减少装箱和拆箱,提高运行效率。
2.类型安全。
3.代码重用。
2.泛型的优点
1.泛型增强了代码的可读性。
2.泛型有助于实现代码的重用,保护类型的安全以及提高性能。
3.我们可以创建泛型集合类。
4.泛型实现了类型和方法的参数化
5.我们还可以对泛型类进行约束以访问特定数据类型的方法。
6.关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取。
3.泛型的约束
1.T:struct 参数类型必须是值类型。可以指定除Nullable意外的所有值类型。有关更多信息,请参见使用可空类型(C#编程指南)
2 T:class 类型参数必须是引用类型,包括任何类,接口,委托或数组类型。
3.T:new() 类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new()约束必须最后指定。
4.T:<基数名> 类型参数必须是指定的基类或派生自指定的基类子类。
5.T:<接口名称>类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也是可以泛型的.
4.泛型方法
1.在C#2.0中,方法可以定义特定于其执行范围的泛型参数。
2.泛型方法,提供了更加多变的灵活性。泛型方法可以存在于泛型类,也可以在于非泛型类中。你可以将类型参数作为某个方法的参数,返回值,或者局部变量,该类型参数可能并不被整个类所需要,而更明确的用于某个方法。
5.泛型接口定义:
public interface IFace<T>
{
T SayHi();
void SayHello(T msg);
}
6.泛型缓存
类中的静态类型,无论被使用多少次内存中都只存在一个。静态构造函数只会被执行一次。
在泛型类中,T类型不同,每个不同的T类型,都会产生一个不同的副本,所以会产生不同对对静态属性,静态构造函数。
注意:1.泛型缓存比字典缓存效率高。
2.泛型缓存不能主动释放。
浙公网安备 33010602011771号