信息化建设指导网-推进全国信息化发展,打造信息化建设全媒体平台 加入收藏
信息化建设指导网

泛型

日期:2013-06-04 来源:本站 作者:管理员
关键字:
什么是泛型 泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候进行。   泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写 体验泛型 代码时定义一些可变部份,那些部份在使用前必须作出指明。各种程序设计…
    什么是泛型
    泛型是一种特殊的类型,它把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候进行。   泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写 体验泛型
    代码时定义一些可变部份,那些部份在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。泛型类是引用类型,是堆对象,主要是引入了类型参数这个概念。
    泛型的定义
    泛型的定义主要有以下两种:   在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义)在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(现在人们大多把这称作模板)不论使用那个定义,泛型的参数在真正使用泛型时都必须作出指明。   一些强类型编程语言支援泛型,其主要目的是加强类型安全及减少类转换的次数,但一些支持泛型的编程语言只能达到部份目的。
    NET Framework 的泛型

    由于.NET Framework 泛型的类型参数之实际类型在运行时均不会被消除 泛型约束,运行速度会因为类型转换的次数减少而加快。

    另外,使用 GetType 方法可於程序运行时得知泛型及其类型参数的实际类型,更可以运用反射编程。

    允许对个别泛型的类型参数进行约束,包括以下几种形式(假设 C是泛型的类型参数, 是一般类、泛类,或是泛型的类型参数):T 是一个类。T 是一个值类型。T 具有无参数的公有建构方法。T 实现接口 I 。T 是 C ,或继承自 C 。

    Java 的泛型
    Java 泛型的参数只可以代表类,不能代表个别对象。由于 Java 泛型的类型参数之实际类型在编译时会被消除,所以无法在运行时得知其类型参数的类型。Java 编译器在编译泛型时会自动加入类型转换的编码,故运行速度不会因为使用泛型而加快。Java 允许对个别泛型的类型参数进行约束,包括以下两种形式(假设 T 是泛型的类型参数,C 是一般类、泛类,或是泛型的类型参数):T 实现接口 I 。T 是 C ,或继承自 C 。

    C++ 的泛型(模板)
    C++ 无法对泛型的类型参数进行约束。在编译时,每个被使用的封闭泛型类型(即是 泛型约束
    所有泛型参数的实际类型都已被指明的泛型)都会有独立的编码产生,编译器会在此时确保类型安全性。可是如果泛型要运用其泛型参数的某成员,而该泛型参数又不包含该成员的时候,编译器所产生的错误信息或会看似与实际问题无关,增加除错的难度。

    泛型的好处:
    泛型是c#2.0的一个新增加的特性,它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。它允许程序员将一个实际的数据类型的规约延迟至泛型的实例被创建时才确定。泛型为开发者提供了一种高性能的编程方式,能够提高代码的重用性,并允许开发者编写非常优雅的解决方案
分享到:
  • 太极计算机股份有限公司太极计算机股份有
  • 北京中百信信息技术股份有限公司北京中百信信息技
  • 福瑞博德软件开发公司福瑞博德软件开发
  • 北京护航科技有限公司北京护航科技有限
  • 银江股份有限公司银江股份有限公司
  • 远光软件远光软件
  • 中国软件与技术服务股份有限公司中国软件与技术服
  • 启明信息技术股份有限公司启明信息技术股份
  • 戴尔戴尔
  • HPHP
  • 东华软件股份公司东华软件股份公司
  • 东软集团东软集团