.NET Framework 中的泛型集合

更新:2007 年 11 月

本主题概述 .NET Framework 中的泛型集合类以及其他泛型类型。

.NET Framework 中的泛型集合

.NET Framework 类库在 System.Collections.GenericSystem.Collections.ObjectModel 命名空间中提供了很多泛型集合类。有关这些类的更多信息,请参见常用的集合类型

System.Collections.Generic

许多泛型集合类型是非泛型类型的直接模拟。Dictionary<TKey, TValue>Hashtable 的泛型版本;它使用泛型结构 KeyValuePair<TKey, TValue> 而不是 DictionaryEntry 进行枚举。

List<T>ArrayList 的泛型版本。存在对应于非泛型版本的泛型 Queue<T>Stack<T> 类。

SortedList<TKey, TValue> 具有泛型和非泛型两个版本。这两个版本都是字典和列表的混合。SortedDictionary<TKey, TValue> 泛型类是一个纯字典,它不具有非泛型对应项。

LinkedList<T> 泛型类是一个真正的链接列表。它没有对应的非泛型类。

System.Collections.ObjectModel

Collection<T> 泛型类为派生您自己的泛型集合类型提供了基类。ReadOnlyCollection<T> 类为从实现 IList<T> 泛型接口的任何类型生成只读集合提供了简单的方法。KeyedCollection<TKey, TItem> 泛型类提供了存储包含自己键的对象的方法。

其他泛型类型

Nullable<T> 泛型结构允许将值类型视为可以分配为 null 来使用。在使用数据库查询时这非常有用,在数据库查询中可以缺少包含值类型的字段。泛型类型参数可以是任何值类型。

说明:

在 C# 中不必显式使用 Nullable<T>,因为这种语言具有供可以为 null 的类型使用的语法。

ArraySegment<T> 泛型结构提供了一种方式来分隔任何类型的一维的、从零开始的数组内的某个范围的元素。泛型类型参数是数组元素的类型。

如果事件遵从 .NET Framework 使用的事件处理模式,则使用 EventHandler<TEventArgs> 泛型委托可以不必声明委托类型即可处理事件。例如,假设您创建了 MyEventArgs 类(该类从 EventArgs 派生)以包含您的事件的数据。然后可以声明事件,如下所示:

Public Event MyEvent As EventHandler(Of MyEventArgs)
public event EventHandler<MyEventArgs> MyEvent;
public:
    event EventHandler<MyEventArgs^>^ MyEvent;

请参见

概念

.NET Framework 中的泛型概述

用于操作数组和列表的泛型委托

泛型接口

泛型的优点和限制

参考

System.Collections.Generic

System.Collections.ObjectModel

其他资源

.NET Framework 中的泛型