码迷,mamicode.com
首页 > 其他好文 > 详细

第十二章 泛型

时间:2015-03-06 18:42:06      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

1. 概述

  泛型(generic)是CLR和编程语言提供的一种特殊机制,它支持另一种形式的代码重用,即“算法重用”。

  泛型为开发人员提供了以下优势:

  ① 源代码保护。(针对C++的模板技术)

  ② 类型安全。

  ③ 更加清晰的代码。(减少转型次数)

  ④ 更佳的性能。(值类型无需装箱)

2. 名词解释

  ① 代码爆炸:泛型类型在编译时,CLR要为每种不同的方法/类型组合生成本地代码。它可能造成应用程序的工作集显著增大,影响性能。

3. 主要内容

  3.1 Framework类库中的泛型

    FCL定义的几个泛型集合类,大多数在 System.Collections.Generic 和 System.Collections.ObjectModel命名空间中。

    要使用现成安全的集合类,可以去 System.Collections.Concurrent命名空间找寻。

    System.Array类(所有数组类型的基类)提供了大量静态泛型方法。

  3.2 Wintellect 的 Power Collections 库

    Wintellect制作了Power Collections 库,使CLR程序员也能使用C++标准模板库(STL)的部分集合类。

  3.3 泛型基础结构

    3.3.1 开放类型和封闭类型

      具有泛型类型参数的类型成为 开放类型,CLR 禁止构造开放类型的任何实例。

    3.3.2 泛型类型和继承

      泛型类型仍然是类型,所以它能从其他任何类型派生。

    3.3.3 泛型类型同一性

    3.3.4 代码爆炸

      CLR内建了一些优化措施来缓解代码爆炸:

      ① 假如为一个特定的类型实参调用了一个方法,以后再次使用相同的类型实参来调用时,CLR只会为这个方法/类型组合编译一次代码。

      ② CLR认为所有引用类型实参都是完全相同的,所以代码能够共享。

  3.4 泛型接口

    一个引用类型或值类型可通过指定类型实参的方式来实现泛型接口,也可以保持类型实参的未指定状态来实现一个泛型接口。

  3.5 泛型委托

  3.6 委托和接口的逆变和协变泛型类型实参(好拗口)

    未完待续。。。

第十二章 泛型

标签:

原文地址:http://www.cnblogs.com/stone_lv/p/4318862.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!