泛型:支持值类型和引用类型,不支持枚举。
没有泛型属性。
泛型的好处:
源代码保护。使用泛型算法不需要访问算法的源码——相对于C++模板
类型安全——相对于ArrayList
更加清晰的源码——不需要拆箱,显示转换
更佳的性能——不用装箱。测试:循环1000万次,泛型List<T>与ArrayList分别用时0.1s和2s
16.1 FCL中的泛型
List<T> 取代ArrayList
Directory<TKey, TValue>取代HashTable
Stack<T>,Queue<T>分别取代Stack,Queue
IList,IDirectory,ICollection,IEnumerator,IEnumerable,IComparer,IComparable分别由相应的泛型接口(加上<T>)
16.3 泛型基础结构
这一节的前言很有意思:如何在已有的CLR中添加泛型:
创建新的IL泛型指令
修改元数据格式,以支持泛型参数/类型/方法
修改各种语言C#/VB.NET
修改编译器csc,使之生成新的IL泛型指令/元数据
修改JITer,使之可以处理新的IL泛型指令
创建新的反射成员:泛型参数/类型/方法
修改调试器
修改vs2005智能感知
CLR为应用程序使用的每个类型创建一个内部数据结构,称为“类型对象”。
具有泛型类型参数的一个类型class<T>,仍然是一个类型,也具有一个类型对象,称为“开放式类型”,CLR禁止构造开放式类型的实例;
当T是一个实际类型时class<Guid>,称为“封闭式类型”,CLR中可以创建封闭式类型的实例。
语法Activator.Creator(type):根据type获取其一个实例。有
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!