常用的集合类型

集合类型是诸如哈希表、队列、堆栈、包、字典和列表等数据集合的常见变体。

集合基于 ICollection 接口、IList 接口、IDictionary 接口,或其泛型集合中的相应接口。 IList 接口和 IDictionary 接口都是从 ICollection 接口派生的;因此,所有集合都直接或间接基于 ICollection 接口。 在基于 IList 接口的集合(例如 ArrayArrayListList<T>)或直接基于 ICollection 接口的集合(例如 QueueConcurrentQueue<T>StackConcurrentStack<T>LinkedList<T>)中,每个元素只包含一个值。 在基于 IDictionary 接口的集合(例如 HashtableSortedList 类、Dictionary<TKey, TValue>SortedList<TKey, TValue> 泛型类)或基于 ConcurrentDictionary<TKey, TValue> 类的集合中,每个元素都包含一个键和一个值。 KeyedCollection<TKey, TItem> 类较为特别,因为它是值中带有嵌入键的值列表,因此它的行为既像列表又像字典。

泛型集合是设置强类型的最佳方式。 不过,如果所用语言不支持泛型,System.Collections 命名空间中包含基集合,如 CollectionBaseReadOnlyCollectionBaseDictionaryBase,这些都是抽象基类,可以扩展这些抽象基类以创建强类型的集合类。 当需要高效的多线程集合访问时,可以使用 System.Collections.Concurrent 命名空间中的泛型集合。

根据存储元素的方式、对元素进行排序的方式、执行搜索的方式以及进行比较的方式的不同,集合可能也有所不同。 Queue 类和 Queue<T> 泛型类提供先进先出列表,而 Stack 类和 Stack<T> 泛型类提供后进先出列表。 SortedList 类和 SortedList<TKey, TValue> 泛型类提供 Hashtable 类和 Dictionary<TKey, TValue> 泛型类的排序的版本。 HashtableDictionary<TKey, TValue> 中的元素只能通过元素的键访问;而 SortedListKeyedCollection<TKey, TItem> 中的元素既可以通过元素的键访问,也可以通过元素的索引访问。 所有集合中的索引都从零开始,不过 Array 除外,它允许使用索引不从零开始的数组。

LINQ to Objects 功能允许使用 LINQ 查询访问内存中的对象,但条件是该对象类型要实现 IEnumerableIEnumerable<T>。 LINQ 查询提供了一种通用的数据访问模式;与标准 foreach 循环相比,它通常更加简洁,可读性更高;这种查询可提供筛选、排序和分组功能。 LINQ 查询还可提高性能。 有关更多信息,请参见 LINQ to Objects并行 LINQ (PLINQ)

相关主题

标题

说明

数组集合类型

描述可以让数组作为集合来进行处理的数组功能。

ArrayList 和 List 集合类型

描述泛型列表和非泛型列表(最常用的集合类型)的功能。

Hashtable 和 Dictionary 集合类型

描述基于哈希的泛型和非泛型字典类型的功能。

已排序的集合类型

描述提供列表和集的排序功能的类。

队列集合类型

描述泛型和非泛型队列的功能。

堆栈集合类型

描述泛型和非泛型堆栈的功能。

HashSet 集合类型

描述泛型 System.Collections.Generic.HashSet<T> 集合类型。

HashSet 和 LINQ Set 运算

描述 System.Collections.Generic.HashSet<T> 集合类型提供的 Set 操作以及 LINQ Set 操作。

集合和数据结构

讨论 .NET Framework 中提供的各种集合类型,包括堆栈、队列、列表、数组和结构。

.NET Framework 中的泛型

描述泛型功能,包括由 .NET Framework 提供的泛型集合、委托和接口。 提供指向有关 C#、Visual Basic 和 Visual C++ 的功能文档和支持技术(如反射)的链接。

参考

System.Collections

System.Collections.Generic

System.Collections.ICollection

System.Collections.Generic.ICollection<T>

System.Collections.IList

System.Collections.Generic.IList<T>

System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey, TValue>