初学范型,有点模模糊糊不太理解,找到一些资料希望和大家一起分享一下:
范型的设计是为了解决Object的多态性设计中的两个问题:
(1),性能上面的,boxing和unboxing需要大量的复制开销;
(2),安全性上面的,在上面一个例子看到了如果unboxing类型不同会抛出一个InvalidCastException异常; 范型的设计格式是使用<和>封闭其中一个范型参数,例如:public class Stack<T>;
范型的实例化格式是使用需要使用的类型替换<和>封闭其中一个范型参数,例如:
Stack<char> char_Stack = new Stack<char>();
多范型类定义格式,在<和>封闭多个范型参数,例如:class Node<K,T>
在C#2.0中范型是在中间语言(IL)和公共语言运行时(CLR)支持的.对于值类型:会在JIT编译时候替换参数类型,如果存在以及编译特定类型的机器代码,将直接返回这段代码.这样避免了在ISO C++中Template可能带来代码膨胀.
对于引用类型:会直接在JIT编译时候替换参数类型.
理解C# 2.0范型是在实现是基于CLR支持的很重要啊,因为.NET的本质是和语言无关的.任何语言最后都是编译为中间语言,这样基于IL和CLR支持的范型可以运用到所有基于CLR实现的语言.
使用范型的优点:
程序员只需要编写、测试、部署代码一次,即可以对不同的数据类型重复使用该代码。
同时&#