泛型--Generic

.net framework 2.0推出的新语法

适用于:用一个泛型方法,满足不同参数类型,做相同的事情

延迟声明:把参数类型的声明推迟到调用

不是语法糖,而是由框架升级提供的功能

public void GenericMethod<T>(T tParameter){...}; //也可以使用别的字符代表泛型,不能使用关键字,可以使用中文

调用:GenericMethod<int>(1); 或者 GenericMethod(1);//省略<int>时,会自动根据参数类型判定

泛型需要编译器支持+JIT支持

泛型使用的是占位符操作  ~1代表一个占位符

泛型的性能和普通方法差不多~但好处多多

几种用法:

泛型类继承(接口同理):

泛型约束(constraint):

基类约束(限定为People类或其子类):

注:作为约束使用的类型必须是接口、非密封类或类型参数

其中 T tNew = default(T); 会根据T的不同 赋予默认值

上面几种类型约束可以叠加使用(部分),用逗号分隔

协变

逆变

泛型缓存

每个不同类型的T,都会生成一份不同的副本

适合不同类型需要缓存一份数据的场景,效率高(缓存直接存放在内存中,用的时候直接拿)

不能主动释放,直到程序关闭

原文地址:https://www.cnblogs.com/1016391912pm/p/11626316.html