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

C#知识 泛型

时间:2014-08-30 23:12:10      阅读:384      评论:0      收藏:0      [点我收藏+]

标签:style   使用   io   ar   数据   div   问题   cti   代码   

C#知识 泛型

        泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个新功能。泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数 T,您可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作的成本或风险,避免进行强制类型转换的需求提高类型安全性。

泛型概述及优点

        泛型类和泛型方法同时具备可重用性、类型安全和效率高等特点。它通常用在集合和在集合上运行的方法中。.NET 2.0版类库提供了一个新的名为System.Collections.Generic的命名空间,其中包含几个新的基于泛型的集合类。
        也可以创建自定义泛型类型和方法。
        泛型类和方法接收”类型参数“,指定了要操作的对象的类型:
public class Test<T> {}
        在实例化时才指定类型。
Test<int> tree = new Test<int>(); 
        使用泛型类型有以下优点:
  1. 使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。
  2. 泛型最常见的用途是创建集合类。
  3. .NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如 System.Collections 命名空间中的 ArrayList。
  4. 您可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。
  5. 可以对泛型类进行约束以访问特定数据类型的方法。
  6. 关于泛型数据类型中使用的类型的信息可在运行时通过反射获取。

泛型中的类型参数T

        类型参数T用来定义泛型类时的占位符,并不是一种类型,仅代表某种可能的类型。在定义时,T出现的位置可以在使用是用任何类型来代替。

决定在何时何地使用泛型

        您需要考虑以下几件事件: 
  • 您所使用的类型是否包含或操作未指定的数据类型(如集合类型)?如果是这样,创建泛型类型将能提供更多的好处。如果您的类型只操作单一的指定类型,那么就没有必要去创建一个泛型类。 
  • 如果您的类型将操作值类型,那么就会产生装箱和拆箱操作,就应该考虑使用泛型来防止装箱和拆箱操作。 
  • 泛型的强类型检查有助于快速查找错误(也就是编译期而非运行期),从而缩短bug修复周期。
  • 在编写多个类操作多个数据类型时是否遭遇到“代码膨胀”问题(如一个ArrayList只存储StreamReaders而另一个存储StreamWriters)?其实编写一次代码并让它工作于多个数据类型非常简单。
  • 泛型使得代码更为清晰。通过消除代码膨胀并进行强制检查,您的代码将变得更易于阅读和理解。

















C#知识 泛型

标签:style   使用   io   ar   数据   div   问题   cti   代码   

原文地址:http://blog.csdn.net/crazygolf/article/details/38947413

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