msdn中泛型的相关介绍

msdn中泛型的相关介绍

ID:8804759

大小:214.00 KB

页数:17页

时间:2018-04-08

msdn中泛型的相关介绍_第1页
msdn中泛型的相关介绍_第2页
msdn中泛型的相关介绍_第3页
msdn中泛型的相关介绍_第4页
msdn中泛型的相关介绍_第5页
资源描述:

《msdn中泛型的相关介绍》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、泛型(C#编程指南)泛型是2.0版C#语言和公共语言运行库(CLR)中的一个新功能。泛型将类型参数的概念引入.NETFramework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数T,您可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作的成本或风险,如下所示:C#复制代码//DeclarethegenericclasspublicclassGenericList{voidAdd(Tinput){}}classTestGener

2、icList{privateclassExampleClass{}staticvoidMain(){//DeclarealistoftypeintGenericListlist1=newGenericList();//DeclarealistoftypestringGenericListlist2=newGenericList();//DeclarealistoftypeExampleClassGenericListlist3=newGenericList

3、ass>();}}泛型概述·使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。·泛型最常见的用途是创建集合类。·.NETFramework类库在System.Collections.Generic命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如System.Collections命名空间中的ArrayList。·您可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。·可以对泛型类进行约束以访问特定数据类型的方法。·关于泛型数据类型中使用的类型的信息可在运行时通过反射获取。泛型介绍(C#编程指南)泛型类和泛型

4、方法同时具备可重用性、类型安全和效率,这是非泛型类和非泛型方法无法具备的。泛型通常用在集合和在集合上运行的方法中。.NETFramework2.0版类库提供一个新的命名空间System.Collections.Generic,其中包含几个新的基于泛型的集合类。建议面向2.0版的所有应用程序都使用新的泛型集合类,而不要使用旧的非泛型集合类,如ArrayList。有关更多信息,请参见.NETFramework类库中的泛型(C#编程指南)。当然,也可以创建自定义泛型类型和方法,以提供自己的通用解决方案,设计类型安全的高效模式。下面的代码示例演示一个用于演示用途

5、的简单泛型链接列表类。(大多数情况下,建议使用.NETFramework类库提供的List类,而不要自行创建类。)在通常使用具体类型来指示列表中所存储项的类型时,可使用类型参数T。其使用方法如下:·在AddHead方法中作为方法参数的类型。·在Node嵌套类中作为公共方法GetNext和Data属性的返回类型。·在嵌套类中作为私有成员数据的类型。注意,T可用于Node嵌套类。如果使用具体类型实例化GenericList(例如,作为GenericList),则所有的T都将被替换为int。C#复制代码//typeparameterTin

6、anglebracketspublicclassGenericList{//ThenestedclassisalsogenericonTprivateclassNode{//Tusedinnon-genericconstructorpublicNode(Tt){next=null;data=t;}privateNodenext;publicNodeNext{get{returnnext;}set{next=value;}}//TasprivatememberdatatypeprivateTdata;//Tasreturntypeofproperty

7、publicTData{get{returndata;}set{data=value;}}}privateNodehead;//constructorpublicGenericList(){head=null;}//Tasmethodparametertype:publicvoidAddHead(Tt){Noden=newNode(t);n.Next=head;head=n;}publicIEnumeratorGetEnumerator(){Nodecurrent=head;while(current!=null){yieldreturncurre

8、nt.Data;current=current.Next;}}}下面的代码示例演

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。