.NET 中的泛型集合
.NET 类库提供了许多 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# 和 Visual Basic 中,无需显式使用 Nullable<T>,因为语言具有可以为 null 类型的语法。 请参阅可为 null 的值类型(C# 引用)和可为 null 的值类型 (Visual Basic)。
ArraySegment<T> 泛型结构提供了分隔任何类型的从零开始的一维数组内的一系列元素的方法。 泛型类型参数是数组中元素的类型。
如果你的事件采用 .NET 所使用的事件处理模式,则 EventHandler<TEventArgs> 泛型委托不需要声明委托类型来处理事件。 例如,假设已创建从 EventArgs 派生的 MyEventArgs
类,以包含事件的数据。 则可以声明此事件,如下所示:
public:
event EventHandler<MyEventArgs^>^ MyEvent;
public event EventHandler<MyEventArgs> MyEvent;
Public Event MyEvent As EventHandler(Of MyEventArgs)