.NET Framework 中的泛型集合
更新:2007 年 11 月
本主题概述 .NET Framework 中的泛型集合类以及其他泛型类型。
.NET Framework 中的泛型集合
.NET Framework 类库在 System.Collections.Generic 和 System.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;
请参见
概念
参考
System.Collections.ObjectModel