泛型

泛型是framework2.0版本推出的,编译时候不确定类型(占位符),但是运行时候类型是确定的
严格来说不是语法糖,是因为框架升级支持的(既需要编译器升级,也需要clr升级),属于多态

完整运行过程
c#代码->编辑器编译->exe->CLR(运行)/JIT(再次编译)>机器码

 

泛型约束类型:

基类约束,

接口约束,

引用类型约束,

值类型约束,

无参数构造函数约束

 

 

 可以有多个约束

 

协变逆变:都是跟泛型相关,只能放在接口或者委托的泛型参数前面

协变 :<out T>  简单说 就是可以让右边用子类 , T只能是返回结果,不能作为参数传递

         IEnumerable<Parent> list1=new List<Parent>(); IEnumberable<Parent> list2=new List<Children>();

 

逆变:<in T> 右边的可以用父类,只能是参数

 

 

posted @ 2020-05-03 13:53  hkf  阅读(134)  评论(0编辑  收藏  举报