Visual C++2010 CLR开发电子书02

时间:2022-11-20 22:49:40 作者:壹号 字数:3240字

Visual C++2010 开发权威指南 光盘里面的电子书:Visual C++2010 CLR开发电子书

第2章 Visual C++ 2010 CLR集合

在实际应用中,经常需要处理集合:一些相同类型或不同类型的对象的集合。其中最常用的集合就是数组,在前面的章节中已经学习了利用System::array类对数组进行操作。但是这里的数组要求所有元素必须是相同类型(强类型),而且在编译时必须能确定数组的大小,一旦创建其大小就不能改变,不能再向其添加或从中删除元素。所以System::array常被称为静态数组类。

但是在很多时候,只有在程序运行的过程中才能确定集合的大小,设置集合的类型,而且需要动态添加、删除元素等,这时System::array类就不再适用。这就需要学习本章介绍的“动态”集合类,这些类都是经过精心设计,能满足客户的绝大多数需求。

在.NET框架上,处理集合的类主要放在3个命名空间中:System::Colloctions、 System::Collections:: Generic和System::Collections::Specialized。其中,对象类型的集合位于System::Collections命名空间,泛型集合类位于System::Collections::Generic命名空间、专用于特定类型的集合类位于System::Collections::Specialized命名空间。下面分别对这3个命名空间进行简要介绍。

System::Collections命名空间定义了多种处理对象集合的类和接口,其中包含了处理集合的一些核心类和接口。

常见的接口如下。

ICollection:定义了一个对象的集合,包含获取集合大小、同步访问及枚举的方法。 IComparer:定义了用于比较集合中对象的方法。 IDictionary:定义了用于访问集合中键/值对的方法。

IDictionaryEnumerator:提供了用于在枚举集合时访问键和值的方法。 IEnumerable:允许客户通过GetEnumerator()方法访问集合的枚举器。 IEnumerator:支持对集合的枚举(或迭代)。

IHashCodeProvider:提供一个客户定制哈希(hash)算法的方法。

IList:表示一个对象的集合,提供了添加、删除、插入及通过下标访问元素的方法。 System::Collections命名空间中常用的表示集合的类有如下。 ArrayLinst:可动态增长的数组。

BitArray:位值数组,每位的值只能取0或1。

CaseInsensitiveCompare:比较两个对象是否相等,忽略字符串的大小写。 CollectionBase:一个抽象类,用于继承强类型的集合类。 Compare:比较两个对象是否相等,对字符串的大小写敏感。

DictionaryBase:抽象类,用于继承强类型的字典(即包含键/值对的集合)。 Hashtable:基于键的哈希值组织的键/值对集合。 Queue:代表队列集合,先入先出(FIFO)。

ReadOnlyCollectionBase:代表一个强类型的只读集合抽象基类。

SortedList:代表一个利用键值排序的键/值对集合,可以通过键值或下标访问元素。 Stack:代表栈集合,后入先出(LIFO)。

对范型集合提供支持的类主要都在System::Collections::Generic命名空间中,表2.1列出了一些常

版社

Vi

su

al

C

…… 此处隐藏0字 ……

++

20

10开