C#语言中泛型的使用和性能

    C#中的泛型类似于C++的模版,只是C++中的模版在实例化时需要模版的源代码,而C#中的泛型是在CLR中定义的,所以在C#中定义了泛型也可以在VB等其他环境下使用。也就是说泛型可以在一种.Net语言中定义,在另一种.Net语言中使用。泛型的本质是自己指定类型,所以在拆箱和封箱上的转化性能损失比较小,例如,定义了一个int类型的List泛型:List<int>,代码如下:
    List<int> listInt=new List<int>();
    listInt.Add(58);//不需要封箱和拆箱
    int myInt=listInt[0];//不需要封箱和拆箱
这个时候是定义的是整数(int)类型属于数值类型,在与数值类型进行交换的时候不需要拆箱和封箱的操作。相比ArrayList性能更好,因为ArrayList存储的是对象。泛型在编译的时候进行类型检查,例如,下面的代码不通过,
    listInt.Add("abc");
    但是在ArrayList实例化的对象上,下面的代码编译通过,运行时抛出异常:
    ArrayList arrList=new ArrayList();
    arrList.Add(100);
    arrList.Add("hello");
    int i=arrList[1];//编译正常 运行异常
    所以泛型在类型安全性方面优于其他实例化对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值