常用的集合类型
更新:2007 年 11 月
集合类型是数据集合的常见变体,例如哈希表、队列、堆栈、字典和列表。
集合基于 ICollection 接口、IList 接口、IDictionary 接口,或其泛型集合中的相应接口。IList 接口和 IDictionary 接口都是从 ICollection 接口派生的;因此,所有集合都直接或间接基于 ICollection 接口。在基于 IList 接口的集合中(如 Array、ArrayList 或 List<T>)或直接基于 ICollection 接口的集合中(如 Queue、Stack 或 LinkedList<T>),每个元素都只包含一个值。在基于 IDictionary 接口的集合中(如 Hashtable 和 SortedList 类,或者 Dictionary<TKey, TValue> 和 SortedList<TKey, TValue> 泛型类),每个元素都包含一个键和一个值。KeyedCollection<TKey, TItem> 类较为特别,因为它是值中带有嵌入键的值列表,因此它的行为既像列表又像字典。
泛型集合是设置强类型的最佳方式。不过,如果所用语言不支持泛型,System.Collections 命名空间中包含基集合,如 CollectionBase、ReadOnlyCollectionBase 和 DictionaryBase,这些都是抽象基类,可以扩展这些抽象基类以创建强类型的集合类。
根据存储元素的方式、对元素进行排序的方式、执行搜索的方式以及进行比较的方式的不同,集合可能也有所不同。Queue 类和 Queue<T> 泛型类提供先进先出列表,而 Stack 类和 Stack<T> 泛型类提供后进先出列表。SortedList 类和 SortedList<TKey, TValue> 泛型类提供 Hashtable 类和 Dictionary<TKey, TValue> 泛型类的排序的版本。Hashtable 或 Dictionary<TKey, TValue> 中的元素只能通过元素的键访问;而 SortedList 或 KeyedCollection<TKey, TItem> 中的元素既可以通过元素的键访问,也可以通过元素的索引访问。所有集合中的索引都从零开始,不过 Array 除外,它允许使用索引不从零开始的数组。
LINQ to Objects 功能允许使用 LINQ 查询访问内存中的对象,但条件是该对象类型要实现 IEnumerable 或 IEnumerable<T>。LINQ 查询提供了一种通用的数据访问模式;与标准 foreach 循环相比,它通常更加简洁,可读性更高;这种查询可提供筛选、排序和分组功能。LINQ 查询还可提高性能。有关更多信息,请参见 LINQ to Objects。
本节内容
数组集合类型
描述允许将数组视为集合处理的数组功能。ArrayList 和 List 集合类型
描述泛型和非泛型列表(最常用的集合类型)的功能。Hashtable 和 Dictionary 集合类型
描述基于哈希的泛型和非泛型字典类型的功能。SortedList 和 SortedDictionary 集合类型
描述排序的字典以及组合字典和列表功能的混合类型。队列集合类型
描述泛型和非泛型队列的功能。堆栈集合类型
描述泛型和非泛型堆栈的功能。HashSet 集合类型
描述泛型 HashSet<T> 集合类型。HashSet 和 LINQ Set 运算
描述 HashSet<T> 集合类型提供的 Set 操作以及 LINQ Set 操作。
参考
System.Collections
提供 System.Collections 命名空间的参考文档,该命名空间包含定义各种对象集合的接口和类。System.Collections.Generic
提供 System.Collections.Generic 命名空间的参考文档,该命名空间包含定义泛型集合的接口和类。System.Collections.ICollection
描述 ICollection 类的主要功能,该类定义所有非泛型集合的大小、枚举数和同步方法。System.Collections.Generic.ICollection<T>
描述 ICollection<T> 类的主要功能,该类定义操作泛型集合的方法。System.Collections.IList
描述 IList 类的主要功能,该类表示可按索引逐个访问的对象的非泛型集合。System.Collections.Generic.IList<T>
描述 IList<T> 类的主要功能,该类表示可按索引逐个访问的对象的集合。System.Collections.IDictionary
描述 IDictionary 类的主要功能,该类表示键/值对的非泛型集合。System.Collections.Generic.IDictionary<TKey, TValue>
描述 IDictionary<TKey, TValue> 类的主要功能,该类表示键/值对的泛型集合。
相关章节
集合和数据结构
讨论 .NET Framework 中提供的各种集合类型,包括堆栈、队列、列表、数组和结构。.NET Framework 中的泛型
描述泛型功能,包括由 .NET Framework 提供的泛型集合、委托和接口。提供指向有关 C#、Visual Basic 和 Visual C++ 的功能文档和支持技术(如反射)的链接。