欢迎来到天天文库
浏览记录
ID:8804759
大小:214.00 KB
页数:17页
时间:2018-04-08
《msdn中泛型的相关介绍》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、泛型(C#编程指南)泛型是2.0版C#语言和公共语言运行库(CLR)中的一个新功能。泛型将类型参数的概念引入.NETFramework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数T,您可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作的成本或风险,如下所示:C#复制代码//DeclarethegenericclasspublicclassGenericList{voidAdd(Tinput){}}classTestGener
2、icList{privateclassExampleClass{}staticvoidMain(){//DeclarealistoftypeintGenericListlist1=newGenericList();//DeclarealistoftypestringGenericListlist2=newGenericList();//DeclarealistoftypeExampleClassGenericListlist3=newGenericList3、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#复制代码//typeparameterTin6、anglebracketspublicclassGenericList{//ThenestedclassisalsogenericonTprivateclassNode{//Tusedinnon-genericconstructorpublicNode(Tt){next=null;data=t;}privateNodenext;publicNodeNext{get{returnnext;}set{next=value;}}//TasprivatememberdatatypeprivateTdata;//Tasreturntypeofproperty7、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){yieldreturncurre8、nt.Data;current=current.Next;}}}下面的代码示例演
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;}}}下面的代码示例演
此文档下载收益归作者所有