泛型
一.泛型分类
1、泛型方法
*一个方法满足多种类型的需求
2、泛型委托
*一个委托满足多种类型的需求
3、泛型类
*一个类满足多种类型的需求
4、泛型接口
*一个接口满足多种类型的需求
二.使用泛型的好处
1、避免开箱拆箱
2、相对于使用object而言,性能更好,与普通方法性能差不多
3、可以最大限度的重用代码
4、类型安全
三.泛型约束
1、where T : struct 类型参数必须是值类型
2、where T : class 参数类型必须是引用类型
3、where T : new() 参数类型必须具有公共无参构造函数
4、where T : <基类名> 参数类型必须是基类及其子类
5、where T : <接口名称> 类型参数必须是指定的接口或实现指定的接口
6、where T : U 为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数
7、where T : unmanaged 类型参数不能是引用类型,并且任何嵌套级别均不能包含任何引用类型成员
有些约束是互斥的。
所有值类型必须具有可访问的无参数构造函数。
struct 约束包含 new() 约束,且 new() 约束不能与 struct 约束结合使用。
unmanaged 约束包含 struct 约束。
unmanaged 约束不能与 struct 或 new() 约束结合使用。