泛型的泛型的好处
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了泛型的泛型的好处相关的知识,希望对你有一定的参考价值。
参考技术A泛型是c#2.0的一个新增加的特性,它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设,所以泛型提高了程序的类型安全。它允许程序员将一个实际的数据类型的规约延迟至泛型的实例被创建时才确定。泛型为开发者提供了一种高性能的编程方式,能够提高代码的重用性,并允许开发者编写非常优雅的解决方案。
泛型类和泛型方法同时具备可重用性、类型安全和效率,这是非泛型类和非泛型方法无法具备的。泛型通常用与集合以及作用于集合的方法一起使用。.NET Framework 2.0 版类库提供一个新的命名空间 System.Collections.Generic,其中包含几个新的基于泛型的集合类。建议面向 2.0 版的所有应用程序都使用新的泛型集合类,而不要使用旧的非泛型集合类,如 ArrayList。有关更多信息,请参见 .NET Framework 类库中的泛型(C# 编程指南)。
当然,也可以创建自定义泛型类型和方法,以提供自己的通用解决方案,设计类型安全的高效模式。下面的代码示例演示一个用于演示用途的简单泛型链接列表类。(大多数情况下,应使用 .NET Framework 类库提供的 List<(Of <(T>)>) 类,而不是自行创建类。)在通常使用具体类型来指示列表中存储的项的类型的场合,可使用类型参数 T。其使用方法如下:
在 AddHead 方法中作为方法参数的类型。
在 Node 嵌套类中作为公共方法 GetNext 和 Data 属性的返回类型。
在嵌套类中作为私有成员数据的类型。
注意,T 可用于 Node 嵌套类。如果使用具体类型实例化 GenericList<T>(例如,作为 G // type parameter T in angle bracketspublicclass
public class GenericList<T>
// The nested class is also generic on T
private class Node
// T used in non-generic constructor
public Node(T t)
next = null;
data = t;
private Node next;
public Node Next
get return next; set next = value;
// T as private member data type
private T data;
// T as return type of property
public T Data
get return data; set data = value;
private Node head;
// constructor
public GenericList()
head = null;
// T as method parameter type:
public void AddHead(T t)
Node n = new Node(t);
n.Next = head;
head = n;
public IEnumerator<T> GetEnumerator()
Node current = head;
while (current != null)
yield return current.Data;
current = current.Next; enericList<int>),则所有的 T 都将被替换为 int。
下面的代码示例演示客户端代码如何使用泛型 GenericList<T> 类来创建整数列表。只需更改类型参数,即可方便地修改下面的代码示例,创建字符串或任何其他自定义类型的列表: class TestGenericList
static void Main()
// int is the type argument
GenericList<int> list = new GenericList<int>();
for (int x = 0; x < 10; x++)
list.AddHead(x);
foreach (int i in list)
System.Console.Write(i + );
System.Console.WriteLine(\\nDone);
以上是关于泛型的泛型的好处的主要内容,如果未能解决你的问题,请参考以下文章