C# 泛型 学习笔记(七)

CLR via C# 学习笔记(七)

泛型

一、允许在引用类型、值类型、接口中定义泛型方法List< T >

优势:

  1. 源代码保护,不需要访问List< T >的源代码
  2. 类型安全
    比如List< DateTime > Add(String) 之后会编译报错
  3. 性能好
    由于类型安全,不需要强制类型转换,不如List[0] 不需要强制转成DateTime
    与ArrayList相比 ,存引用类型差不多;存值类型List更快,因为ArrayList存储值类型也会大量装箱

二、IList接口 和 List类 的区别

  1. IList
IList myList = new List<String>();
myList = new List<int>();
  1. List
List<String> myList = new List<String>();

可以看到IList接口可以声明存放String后,可以更改为int,二List类不可以。
在这里插入图片描述

三、代码爆炸

  1. 造成原因:泛型使用过多,CLR为每种不同泛型的方法/类型生成本机代码
  2. CLR内部措施:
    一个程序及使用List< DateTime >,另一个完全不同的程序集也是用List< DateTime >(两个程序集在同一个AppDomain中),那么List< DateTime >只编译一次方法

四、泛型约束

  1. 参数T实现IComparable接口
class Test<T> where T: IComparable
  1. T必须是引用类型、U必须是值类型
class Test<T, U> where T: class where U: struct
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值