NETFramework的System.Collections命名空间包含若干用于实现集合的接口和类,并提供有效地处理这些紧密相关的数据的各种算法。
一.System.Collections 命名空间
System.Collections命名空间包含具有以下功能的类型:定义各种标准的、专门的、通用的集合对象。命名空间
命名空间 | 说明 |
System.Collections | System.Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。 |
System.Collections.Concurrent | System.Collections.Concurrent命名空间提供多个线程安全集合类。当有多个线程并发访问集合时,应使用这些类代替System.Collections和System.Collections.Generic命名空间中的对应类型。 |
System.Collections.Generic | System.Collections.Generic命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。 |
System.Collections.ObjectModel | System.Collections.ObjectModel名称空间包含可在可重用库的对象模型中用作集合的类。在属性或方法返回集合时使用这些类。 |
System.Collections.Specialized | System.Collections.Specialized命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。 |
1. System.Collections
System.Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。
类型 | 类型名称 | 说明 |
类 | | |
| ArrayList | 使用大小会根据需要动态增加的数组来实现IList接口。数组链表集合。 |
| BitArray | 管理位值的压缩数组,该值表示为布尔值,其中true表示位是打开的(1),false表示位是关闭的(0)。 |
| CaseInsensitiveComparer | 比较两个对象是否相等,比较时忽略字符串的大小写。 |
| CaseInsensitiveHashCodeProvider | 已过时。使用忽略字符串大小写的哈希算法,为对象提供哈希代码。 |
| CollectionBase | 为强类型集合提供abstract基类。 |
| Comparer | 比较两个对象是否相等,其中字符串比较是区分大小写的。 |
| DictionaryBase | 为键/值对的强类型集合提供abstract基类。 |
| Hashtable | 表示根据键的哈希代码进行组织的键/值对的集合。 |
| Queue | 表示对象的先进先出集合。 |
| ReadOnlyCollectionBase | 为强类型非泛型只读集合提供abstract基类。 |
| SortedList | 表示键/值对的集合,这些键值对按键排序并可按照键和索引访问。 |
| Stack | 表示对象的简单后进先出(LIFO)非泛型集合。 |
| StructuralComparisons | 提供用于对两个集合对象执行结构比较的对象。 |
结构 | | |
| DictionaryEntry | 定义可设置或检索的字典键/值对。 |
接口 | | |
| ICollection | 定义所有非泛型集合的大小、枚举数和同步方法。 |
| IComparer | 公开一种比较两个对象的方法。 |
| IDictionary | 表示键/值对的非通用集合。 |
| IDictionaryEnumerator | 枚举非泛型字典的元素。 |
| IEnumerable | 公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。 |
| IEnumerator | 支持对非泛型集合的简单迭代。 |
| IEqualityComparer | 定义方法以支持对象的相等比较。 |
| IHashCodeProvider | 已过时。使用自定义哈希函数为对象提供哈希代码。 |
| IList | 表示可按照索引单独访问的对象的非泛型集合。 |
| IStructuralComparable | 支持集合对象的结构比较。 |
| IStructuralEquatable | 定义方法以支持对象的结构相等性比较。 |
2. System.Collections.Generic
System.Collections.Generic命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。
类型 | 类型名称 | 说明 |
类 | | |
| Comparer | 为IComparer泛型接口的实现提供基类。 |
| Dictionary | 表示键和值的集合。 |
| Dictionary.KeyCollection | 表示Dictionary中键的集合。此类不能被继承。 |
| Dictionary.ValueCollection | 表示Dictionary中值的集合。此类不能被继承。 |
| EqualityComparer | 为IEqualityComparer泛型接口的实现提供基类。 |
| HashSet | 表示值的集。 |
| KeyedByTypeCollection | 提供一个集合,该集合的项是用作键的类型。 |
| KeyNotFoundException | 指定用于访问集合中元素的键与集合中的任何键都不匹配时所引发的异常。 |
| LinkedList | 表示双向链接列表。 |
| LinkedListNode | 表示LinkedList中的节点。此类不能被继承。 |
| List | 表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。 |
| Queue | 表示对象的先进先出集合。 |
| SortedDictionary | 表示根据键进行排序的键/值对的集合。 |
| SortedDictionary.KeyCollection | 表示SortedDictionary中键的集合。此类不能被继承。 |
| SortedDictionary.ValueCollection | 表示SortedDictionary中值的集合。无法继承此类 |
| SortedList | 表示根据键进行排序的键/值对的集合,而键基于的是相关的IComparer实现。 |
| SortedSet | 表示按排序顺序保持的对象的集合。 |
| Stack | 表示相同任意类型的实例的可变大小的后进先出(LIFO)集合。 |
| SynchronizedCollection | 提供一个线程安全集合,其中包含泛型参数所指定类型的对象作为元素。 |
| SynchronizedKeyedCollection | 提供一个线程安全集合,该集合所含对象的类型由一个泛型参数指定,并且集合根据键进行分组。 |
| SynchronizedReadOnlyCollection | 提供一个线程安全只读集合,该集合包含泛型参数所指定的类型的对象作为元素。 |
结构 | | |
| Dictionary.Enumerator | 枚举Dictionary的元素。 |
| Dictionary.KeyCollection.Enumerator | 枚举Dictionary.KeyCollection的元素。 |
| Dictionary.ValueCollection.Enumerator | 枚举Dictionary.ValueCollection的元素。 |
| HashSet.Enumerator | 枚举HashSet对象的元素。 |
| KeyValuePair | 定义可设置或检索的键/值对。 |
| LinkedList.Enumerator | 枚举LinkedList的元素。 |
| List.Enumerator | 枚举List的元素。 |
| Queue.Enumerator | 枚举Queue的元素。 |
| SortedDictionary.Enumerator | 枚举SortedDictionary的元素。 |
| SortedDictionary.KeyCollection.Enumerator | 枚举SortedDictionary.KeyCollection的元素。 |
| SortedDictionary.ValueCollection.Enumerator | 枚举SortedDictionary.ValueCollection的元素。 |
| SortedSet.Enumerator | 枚举SortedSet对象的元素。 |
| Stack.Enumerator | 枚举Stack的元素。 |
接口 | | |
| ICollection | 定义操作泛型集合的方法。 |
| IComparer | 定义类型为比较两个对象而实现的方法。 |
| IDictionary | 表示键/值对的泛型集合。 |
| IEnumerable | 公开枚举数,该枚举数支持在指定类型的集合上进行简单迭代。 |
| IEnumerator | 支持在泛型集合上进行简单迭代。 |
| IEqualityComparer | 定义方法以支持对象的相等比较。 |
| IList | 表示可按照索引单独访问的一组对象。 |
| IReadOnlyCollection | 表示元素的强类型的只读集合。 |
| IReadOnlyDictionary | 表示键/值对泛型只读集合对。 |
| IReadOnlyList | 表示可以按索引获取元素的只读集合。 |
| ISet | 提供用于集的抽象化的基接口。 |
3. System.Collections.Specialized
System.Collections.Specialized命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。
类型 | 类型名称 | 说明 |
类 | | |
| CollectionChangedEventManager | 提供WeakEventManager实现,以便可以使用“弱事件侦听器”模式附加CollectionChanged事件的侦听器。 |
| CollectionsUtil | 创建忽略字符串大小写的集合。 |
| HybridDictionary | 通过以下方法来实现IDictionary:在集合较小时使用ListDictionary,然后在集合变大时切换到Hashtable。 |
| ListDictionary | 使用单向链接列表实现IDictionary。建议为通常包括少于10个项目的集合。 |
| NameObjectCollectionBase | 为关联的String键和Object值的集合(可通过键或索引来访问它)提供abstract基类。 |
| NameObjectCollectionBase.KeysCollection | 表示集合的String键的集合。 |
| NameValueCollection | 表示可通过键或索引访问的关联String键和String值的集合。 |
| NotifyCollectionChangedEventArgs | 为CollectionChanged事件提供数据。 |
| OrderedDictionary | 表示键或索引可访问的键/值对的集合。 |
| StringCollection | 表示字符串的集合。 |
| StringDictionary | 使用字符串(而不是对象)强类型的键和值来实现哈希表。 |
| StringEnumerator | 支持在StringCollection上进行简单迭代。 |
结构 | | |
| BitVector32 | 提供一个简单结构,该结构以32位内存存储布尔值和小整数。 |
| BitVector32.Section | 表示可以包含整数的向量的节。 |
接口 | | |
| INotifyCollectionChanged | 向侦听器通知动态更改,如在添加或移除项时或在刷新整个列表时。 |
| IOrderedDictionary | 表示键/值对的索引集合。 |
委托 | NotifyCollectionChangedEventHandler | 表示处理CollectionChanged事件的方法。 |
枚举 | NotifyCollectionChangedAction | 描述引起了CollectionChanged事件的操作。 |
4. System.Collections.Concurrent命名空间
System.Collections.Concurrent命名空间提供多个线程安全集合类。当有多个线程并发访问集合时,应使用这些类代替System.Collections和System.Collections.Generic命名空间中的对应类型。
类型 | 类型名称 | 说明 |
类 | | |
| BlockingCollection | 为实现IProducerConsumerCollection的线程安全集合提供阻塞和限制功能。 |
| ConcurrentBag | 表示对象的线程安全的无序集合。 |
| ConcurrentDictionary | 表示可由多个线程同时访问的键值对的线程安全集合。 |
| ConcurrentQueue | 表示线程安全的先进先出(FIFO)集合。 |
| ConcurrentStack | 表示线程安全的后进先出(LIFO)集合。 |
| OrderablePartitioner | 表示将一个可排序数据源拆分成多个分区的特定方式。 |
| Partitioner | 提供针对数组、列表和可枚举项的常见分区策略。 |
| Partitioner | 表示将一个数据源拆分成多个分区的特定方式。 |
接口 | | |
| IProducerConsumerCollection | 定义供制造者/使用者用来操作线程安全集合的方法。此接口提供一个统一的表示(为生产者/消费者集合),从而更高级别抽象如System.Collections.Concurrent.BlockingCollection可以使用集合作为基础的存储机制。 |
枚举 | | |
| EnumerablePartitionerOptions | 即开即用分区程序使用创建设置默认行为。例如,默认情况下,缓冲区的某种形式和多级组块将使用完成IEnumerable实现是快速、非阻塞常见方案的最佳性能。使用此枚举,这些行为可重写。 |
5. System.Collections.ObjectModel命名空间
System.Collections.ObjectModel名称空间包含可在可重用库的对象模型中用作集合的类。在属性或方法返回集合时使用这些类。
类型 | 类型名称 | 说明 |
类 | | |
| Collection | 提供泛型集合的基类。 |
| KeyedCollection | 提供集合键嵌入在值中的集合的抽象基类。 |
| ObservableCollection | 表示一个动态数据集合,在添加项、移除项或刷新整个列表时,此集合将提供通知。 |
| ReadOnlyCollection | 提供泛型只读集合的基类。 |
| ReadOnlyDictionary | 表示键/值为只读,泛型集合对。 |
| ReadOnlyDictionary.KeyCollection | 表示ReadOnlyDictionary对象的关键的只读集合。 |
| ReadOnlyDictionary.ValueCollection | 表示ReadOnlyDictionary对象值的只读集合。 |
| ReadOnlyObservableCollection | 表示只读ObservableCollection。 |