泛型是C#中优秀的功能之一,在.net2.0被引入,如果没有泛型,我们想使用一个可变集合需要使用ArrayList:
我们申明一个int类型的可变数组,但是ArrayList只接受object参数,隐式的将int转换为object,进行了装箱操作,带来了额外的性能开销。
一、假如不小心在int集合中插入了字符串:
我们来调用一下这个计算方法:(控制台程序)
执行结果:
报错了,因为字符串不能转换为Int类型,这里不仅存在类型安全问题,还进行了拆箱,把引用类型转换为值类型,带来了额外的开销。
有了泛型后我们就可以这样定义可变数组:
类型安全了,又没有额外的开销:
二、普通字典:
存在跟案例一同样的问题,装箱、拆箱、类型不安全。
泛型字典: