ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 泛型(C# 编程指南) 2.0 版 C# 语言和公共语言运行时 (CLR) 中增加了泛型。泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数 T,您可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作的成本或风险,如下所示: ``` // Declare the generic class. public class GenericList<T> { void Add(T input) { } } class TestGenericList { private class ExampleClass { } static void Main() { // Declare a list of type int. GenericList<int> list1 = new GenericList<int>(); // Declare a list of type string. GenericList<string> list2 = new GenericList<string>(); // Declare a list of type ExampleClass. GenericList<ExampleClass> list3 = new GenericList<ExampleClass>(); } } ``` ## 泛型概述 * 使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。 * 泛型最常见的用途是创建集合类。 * .NET Framework 类库在 [System.Collections.Generic](https://msdn.microsoft.com/zh-cn/library/system.collections.generic.aspx) 命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如 [System.Collections](https://msdn.microsoft.com/zh-cn/library/system.collections.aspx) 命名空间中的 [ArrayList](https://msdn.microsoft.com/zh-cn/library/system.collections.arraylist.aspx)。 * 您可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。 * 可以对泛型类进行约束以访问特定数据类型的方法。 * 关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取。 ## 相关章节 有关更多信息: * [泛型介绍(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/0x6a29h6.aspx) * [泛型的优点(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/b5bx6xee.aspx) * [泛型类型参数(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/0zk36dx2.aspx) * [类型参数的约束(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/d5x73970.aspx) * [泛型类(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/sz6zd40f.aspx) * [泛型接口(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/kwtft8ak.aspx) * [泛型方法(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/twcad0zb.aspx) * [泛型委托(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/sx2bwtw7.aspx) * [泛型代码中的默认关键字(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/xwth0h0d.aspx) * [C++ 模板和 C# 泛型之间的区别(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/c6cyy67b.aspx) * [泛型和反射(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/ms173128.aspx) * [运行时中的泛型(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/f4a6ta2h.aspx) * [.NET Framework 类库中的泛型(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/ac30fak4.aspx) ## C# 语言规范 有关更多信息,请参见 [C# 语言规范](https://msdn.microsoft.com/zh-cn/library/ms228593.aspx)。 ## 请参阅 [System.Collections.Generic](https://msdn.microsoft.com/zh-cn/library/system.collections.generic.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [类型(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/ms173104.aspx) [&lt;typeparam&gt;(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/ms173191.aspx) [&lt;typeparamref&gt;(C# 编程指南)](https://msdn.microsoft.com/zh-cn/library/ms173192.aspx)