码迷,mamicode.com
首页 > 其他好文 > 详细

泛型--Generic

时间:2019-10-06 09:57:42      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:逗号   方法   bsp   默认   param   jpg   --   升级   mic   

.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,都会生成一份不同的副本

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

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

技术图片

 

泛型--Generic

标签:逗号   方法   bsp   默认   param   jpg   --   升级   mic   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!