通常情况下,建议您使用泛型集合,因为这样可以获得类型安全的直接优点而不需要从基集合类型派生并实现类型特定的成员。此外,如果集合元素为值类型,泛型集合类型的性能通常优于对应的非泛型集合类型(并优于从非泛型基集合类型派生的类型),因为使用泛型时不必对元素进行装箱。
下面的泛型类型对应于现有的集合类型:
-
Dictionary 是对应于 Hashtable 的泛型类。
-
Collection 是对应于 CollectionBase 的泛型类。Collection 可以用作基类,但是与 CollectionBase 不同的是它不是抽象的,因而更易于使用。
-
ReadOnlyCollection 是对应于 ReadOnlyCollectionBase 的泛型类。ReadOnlyCollection 不是抽象的,它具有一个构造函数,该构造函数使其更易于将现有的 List 公开为只读集合。
-
Queue、Stack 和 SortedList 泛型类分别对应于与其同名的非泛型类。
其他类型
有几种泛型集合类型没有对应的非泛型类型:
-
LinkedList 是一个通用链接列表,它提供运算复杂度为 O(1) 的插入和移除操作。
-
SortedDictionary 是一个排序的字典,其插入和检索操作的运算复杂度为 O(log n),这使得它成为 SortedList 的十分有用的替代类型。
-
KeyedCollection 是介于列表和字典之间的混合类型,它提供了一种存储包含自己键的对象的方法。
其他功能
一些泛型类型具有在非泛型集合类型中没有的功能。例如,List 类(对应于非泛型 ArrayList 类)具有许多接受泛型委托(如允许指定搜索列表的方法的 Predicate 委托、表示操作每个列表元素的 Action 委托和允许定义类型之间转换的 Converter 委托)的方法。
List 类允许指定您自己的用于排序和搜索列表的 IComparer 泛型接口实现。SortedDictionary 和 SortedList 类也具有此功能,此外还允许在创建集合时指定比较器。类似地,Dictionary 和 KeyedCollection 类允许您指定自己的相等比较器。
============================================================================
常用的集合类型
集合类型是数据集合的常见变体,例如哈希表、队列、堆栈、字典和列表。
集合基于 ICollection 接口、IList 接口、IDictionary 接口,或其泛型集合中的相应接口。IList 接口和 IDictionary 接口都是从 ICollection 接口派生的;因此,所有集合都直接或间接基于 ICollection 接口。在基于 IList 接口的集合中(如 Array、ArrayList 或 List)或直接基于 ICollection 接口的集合中(如 Queue、Stack 或 LinkedList),每个元素都只包含一个值。在基于 IDictionary 接口的集合中(如 Hashtable 和 SortedList 类,或者 Dictionary 和 SortedList 泛型类),每个元素都包含一个键和一个值。KeyedCollection 类较为特别,因为它是带有嵌入键的值列表,因此它的行为既像列表又像字典。
泛型集合是设置强类型的最佳方式。不过,如果所用语言不支持泛型,System.Collections 命名空间中包含基集合,如 CollectionBase、ReadOnlyCollectionBase 和 DictionaryBase,这些都是抽象基类,可以扩展这些抽象基类以创建强类型的集合类。
根据存储元素的方式、对元素进行排序的方式、执行搜索的方式以及进行比较的方式的不同,集合可能也有所不同。Queue 类和 Queue 泛型类提供先进先出列表,而 Stack 类和 Stack 泛型类提供后进先出列表。SortedList 类和 SortedList 泛型类提供 Hashtable 类和 Dictionary 泛型类的排序的版本。Hashtable 或 Dictionary 中的元素只能通过元素的键访问;而 SortedList 或 KeyedCollection 中的元素既可以通过元素的键访问,也可以通过元素的索引访问。所有集合中的索引都从零开始,不过 Array 除外,它允许使用索引不从零开始的数组。
本节内容
-
数组集合类型
-
描述允许将数组视为集合处理的数组功能。
-
ArrayList 和 List 集合类型
-
描述泛型和非泛型列表(最常用的集合类型)的功能。
-
Hashtable 和 Dictionary 集合类型
-
描述基于哈希的泛型和非泛型字典类型的功能。
-
SortedList 和 SortedDictionary 集合类型
-
描述排序的字典以及组合字典和列表功能的混合类型。
-
队列集合类型
-
描述泛型和非泛型队列的功能。
-
堆栈集合类型
-
描述泛型和非泛型堆栈的功能。
参考
-
System.Collections
-
提供 System.Collections 命名空间的参考文档,该命名空间包含定义各种对象集合的接口和类。
-
System.Collections.Generic
-
提供 System.Collections.Generic 命名空间的参考文档,该命名空间包含定义泛型集合的接口和类。
-
ICollection
-
描述 ICollection 类的主要功能,该类定义所有非泛型集合的大小、枚举数和同步方法。
-
ICollection
-
描述 ICollection 类的主要功能,该类定义操作泛型集合的方法。
-
IList
-
描述 IList 类的主要功能,该类表示可按索引逐个访问的对象的非泛型集合。
-
IList
-
描述 IList 类的主要功能,该类表示可按索引逐个访问的对象的集合。
-
IDictionary
-
描述 IDictionary 类的主要功能,该类表示键/值对的非泛型集合。
-
IDictionary
-
描述 IDictionary 类的主要功能,该类表示键/值对的泛型集合。