常用的集合类型

集合类型表示收集数据的不同方法,例如哈希表、队列、堆栈、包、字典和列表。

所有集合都以直接或间接方式基于 ICollectionICollection<T> 接口。 IList 及其 IDictionary 泛型对应项都派生自这两个接口。

在基于 IList 或直接依据 ICollection的集合中,每个元素仅包含一个值。 这些类型包括:

在基于IDictionary接口的集合中,每个元素都包含一个键和一个值。 这些类型包括:

KeyedCollection<TKey,TItem> 类是唯一的,因为它是值内嵌入的键的值列表。 因此,它的行为既像列表一样,也像字典一样。

如果需要高效的多线程集合访问,请使用命名空间中的 System.Collections.Concurrent 泛型集合。

QueueQueue<T> 类提供的是先进先出列表。 这些 StackStack<T> 类提供后进先出列表。

强类型化

泛型集合是强键入的最佳解决方案。 例如,将Int32以外的任何类型的元素添加到List<Int32>集合中都会导致编译时错误。 但是,如果语言不支持泛型,则 System.Collections 命名空间包含可以扩展的抽象基类,以创建强类型化的集合类。 这些基类包括:

集合之间存在哪些不同

集合存储、排序和比较元素的方式以及它们执行搜索的方式有所不同。

SortedList类和SortedList<TKey,TValue>泛型类提供Hashtable类和Dictionary<TKey,TValue>泛型类的排序版本。

所有集合都使用从零开始的索引,除了Array,它允许数组不是从零开始。

可以通过键或元素的索引来访问SortedListKeyedCollection<TKey,TItem>的元素。 只能通过元素的键来访问HashtableDictionary<TKey,TValue>的元素。

将 LINQ 与集合类型配合使用

LINQ to Objects 功能提供了一种常见模式,用于访问任何实现 IEnumerable 或的 IEnumerable<T>类型的内存中对象。 LINQ 查询相较于标准构造(例如循环)具有多项优势:

  • 它们简洁明了,易于理解。
  • 他们可以筛选、排序和分组数据。
  • 它们可以提高性能。

有关详细信息,请参阅 LINQ to Objects (C#)LINQ to Objects (Visual Basic)并行 LINQ (PLINQ)。

标题 DESCRIPTION
集合和数据结构 讨论 .NET 中可用的各种集合类型,包括堆栈、队列、列表、数组和字典。
哈希表和字典集合类型 介绍泛型和非基于哈希的字典类型的功能。
已排序的集合类型 描述为列表和集提供排序功能的类。
泛型 介绍泛型功能,包括 .NET 提供的泛型集合、委托和接口。 提供 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>