System.Collections、System.Collections.Generic、System.Collections.Specialized这三个命名空间看上去都差不多,但是放在一起就会发现他们之间的差别。
System.Collections 命名空间
System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。
类
类 | 说明 | |
| 使用大小可按需动态增加的数组实现 IList 接口。 | |
| 管理位值的压缩数组,该值表示为布尔值,其中 true 表示位是打开的 (1),false 表示位是关闭的 (0)。 | |
| 比较两个对象是否相等,比较时忽略字符串的大小写。 | |
| 使用忽略字符串大小写的哈希算法,为对象提供哈希代码。 | |
| 为强类型集合提供 abstract 基类。 | |
| 比较两个对象是否相等,其中字符串比较是区分大小写的。 | |
| 为键/值对的强类型集合提供 abstract 基类。 | |
| 表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。 | |
| 表示对象的先进先出集合。 | |
| 为强类型非泛型只读集合提供 abstract 基类。 | |
| 表示键/值对的集合,这些键值对按键排序并可按照键和索引访问。 | |
| 表示对象的简单的后进先出非泛型集合。 |
接口
接口 | 说明 | |
| 定义所有非泛型集合的大小、枚举数和同步方法。 | |
| 公开一种比较两个对象的方法。 | |
| 表示键/值对的非通用集合。 | |
| 枚举非泛型字典的元素。 | |
| 公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。 | |
| 支持对非泛型集合的简单迭代。 | |
| 定义方法以支持对象的相等比较。 | |
| 使用自定义哈希函数为对象提供哈希代码。 | |
| 表示可按照索引单独访问的对象的非泛型集合。 |
结构
结构 | 说明 | |
| 定义可设置或检索的字典键/值对。 |
System.Collections.Generic 命名空间
注意:此命名空间在 .NET Framework 2.0 版中是新增的。
System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。
类
| 类 | 说明 |
| 为 IComparer 泛型接口的实现提供基类。 | |
| 表示键和值的集合。 | |
| 表示 Dictionary 中键的集合。无法继承此类。 | |
| 表示 Dictionary 中值的集合。无法继承此类。 | |
| 为 IEqualityComparer 泛型接口的实现提供基类。 | |
| 指定用于访问集合中元素的键与集合中的任何键都不匹配时所引发的异常。 | |
| 表示双向链表。 | |
| 表示 LinkedList 中的节点。无法继承此类。 | |
| 表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。 | |
| 表示对象的先进先出集合。 | |
| 表示按键排序的键/值对的集合。 | |
| 表示 SortedDictionary 中键的集合。无法继承此类。 | |
| 表示 SortedDictionary 中值的集合。无法继承此类 | |
| 表示键/值对的集合,这些键/值对基于关联的 IComparer 实现按照键进行排序。 | |
| 表示同一任意类型的实例的大小可变的后进先出 (LIFO) 集合。 |
接口
| 接口 | 说明 |
| 定义操作泛型集合的方法。 | |
| 定义类型为比较两个对象而实现的方法。 | |
| 表示键/值对的泛型集合。 | |
| 公开枚举数,该枚举数支持在指定类型的集合上进行简单迭代。 | |
| 支持在泛型集合上进行简单迭代。 | |
| 定义方法以支持对象的相等比较。 | |
| 表示可按照索引单独访问的一组对象。 |
结构
| 结构 | 说明 |
| 枚举 Dictionary 的元素。 | |
| 枚举 Dictionary.KeyCollection 的元素。 | |
| 枚举 Dictionary.ValueCollection 的元素。 | |
| 定义可设置或检索的键/值对。 | |
| 枚举 LinkedList 的元素。 | |
| 枚举 List 的元素。 | |
| 枚举 Queue 的元素。 | |
| 枚举 SortedDictionary 的元素。 | |
| 枚举 SortedDictionary.KeyCollection 的元素。 | |
| 枚举 SortedDictionary.ValueCollection 的元素。 | |
| 枚举 Stack 的元素。 |
System.Collections.Specialized 命名空间
System.Collections.Specialized 命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。
类
| 类 | 说明 |
| 创建忽略字符串大小写的集合。 | |
| 在集合较小时,使用 ListDictionary 来实现 IDictionary,然后当集合变大时,切换到 Hashtable。 | |
| 使用单链接列表实现 IDictionary。建议用于通常包含 10 个或 10 个以下项的集合。 | |
| ||
| 表示集合的 String 键的集合。 | |
| 表示可通过键或索引访问的关联 String 键和 String 值的集合。 | |
| 表示根据键/索引排序的键/值对的集合。 | |
| 表示字符串集合。 | |
| 将键和值强类型化为字符串而不是对象来实现哈希表。 | |
| 支持在 StringCollection 上进行简单迭代。 |
接口
| 接口 | 说明 |
| 表示键/值对的索引集合。 |
结构
| 结构 | 说明 |
| 提供一个简单结构,该结构以 32 位内存存储布尔值和小整数。 | |
| 表示可以包含整数的向量的节。 |