泛型--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,都会生成一份不同的副本
适合不同类型需要缓存一份数据的场景,效率高(缓存直接存放在内存中,用的时候直接拿)
不能主动释放,直到程序关闭