2.0 泛型

1、 泛型中心思想

延迟声明

编译时使用占位符(`1,`2 数字表示对应的泛型参数个数),运行时用确定的类型进行替换。

同一个泛型类,不同的替换类型会动态生成不同的class。

2、 泛型缓存

适用于不同类型需要一份缓存的场景。

3、 泛型约束

基类/接口约束 Where T:People

引用类型约束  Where T:class

值类型约束    Where T:struct

无参数构造函数Where T:new()

4、 泛型的逆变和协变

只能放在接口/委托的泛型参数里面;协变保留分配兼容性,逆变与协变相反。

>out协变: 只能是返回结果,泛型中子类可以代替父类

>in逆变: 只能是输入参数,泛型中父类可以代替子类

原文地址:https://www.cnblogs.com/fat-girl/p/14760342.html