.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 类型的语法。 请参阅可空的值类型(C# 参考)和可空的值类型(Visual Basic)。
泛 ArraySegment<T> 型结构提供了一种方法来分隔任意类型的一维从零开始的数组中的元素范围。 泛型类型参数是数组元素的类型。
如果事件遵循 .NET 使用的事件处理模式,则 EventHandler<TEventArgs> 泛型委托无需声明委托类型来处理事件。 例如,假设已创建一个 MyEventArgs
派生自 EventArgs的类来保存事件的数据。 然后,可以按如下所示声明事件:
public event EventHandler<MyEventArgs> MyEvent;
Public Event MyEvent As EventHandler(Of MyEventArgs)