Visual Basic 中的集合

一般来说,集合是一个用于对相关对象进行分组和管理的对象。 例如,每个 Form 均具有一个控件集合。 (可以通过窗体的 Controls 属性来访问此集合。)此集合是一个表示该窗体上所有控件的对象。 它允许您按照控件的索引在集合中检索控件,以及使用 For Each...Next 语句 (Visual Basic) 来遍历集合中的元素。

但是,有几种类型的集合,而且它们在几个方面均互不相同。

不同类型的集合

Visual Basic 也提供了 Collection 类,您可以利用此类定义和创建自己的集合。 与窗体的 Controls 集合类似,Collection 类也提供使用 For Each...Next 来遍历元素以及按照索引检索元素的内置功能。 有关更多信息,请参见 Collection

但是,这两种类型的集合互相不能交互操作。 例如,下面的代码生成一个编译器错误。

Dim localControls As Collection

' The following line generates a COMPILER ERROR.

localControls = Me.Controls()

由于 Controls 集合是 .NET Framework 集合,而变量 localControls 是 Visual Basic Collection,因此,两种集合互不兼容。 这两种类型的集合是通过不同的类实现的。 它们的方法相似但不相同,而且它们的索引方案并不相同。

从零开始和从一开始的集合

集合可以从零开始或者从一开始,具体取决于起始索引是什么。 前者表示集合中第一项的索引为 0,后者表示第一项的索引为 1。 本页前面讨论的 .NET Framework Controls 集合即是从零开始的集合。 Visual Basic Collection 是从一开始的集合。

从一开始的集合对于 Visual Basic 用户可能更直观,原因是索引是从 1 到 Count 属性(它返回集合中的项数)的值。 与之相对的是,从零开始的集合的索引是 0 到 Count 属性的值减一。 这适用于此情况:索引值是距基值的偏移量,或者对应于从零开始的枚举的成员。

出于标准化的目的,.NET Framework 集合从零开始。 而出于与早期版本兼容的目的,Visual Basic Collection 类从一开始。

索引和键值

通过 Visual Basic Collection 类的实例,可以使用数值索引或 String 键来访问项。 可以在指定或不指定键的情况下将项添加到 Visual Basic Collection 对象。 如果添加一个没有键的项,则必须使用其数值索引才能访问它。

相反,System.Collections.ArrayList 这类的集合只允许数值索引。 除非根据存放键的 String 数组构造自己的映射,否则无法将键与这些集合的元素关联。

添加和移除项

集合在是否可向它们添加项以及如何添加那些项(如果可以添加的话)方面也有差异。 因为 Visual Basic Collection 对象是一种通用编程工具,所以它比其他一些集合更灵活。 它具有一个用于将项放入集合的 Add 方法,以及一个用于取出项的 Remove 方法。

另一方面,某些专用集合不允许您使用代码添加或移除元素。 例如,CheckedListBox.CheckedItems 属性按索引返回对项的引用集合,但您的代码无法在此集合中添加或移除项。 只有用户通过在用户界面中选择或清除适当的框才能这样做。 因此,对于此集合并没有 Add 或 Remove 方法。

请参见

任务

如何:创建对象集合 (Visual Basic)

如何:创建对象数组 (Visual Basic)

如何:添加、删除和检索集合中的项 (Visual Basic)

如何:在类中定义集合 (Visual Basic)

如何:在 Visual Basic 中循环访问集合

集合疑难解答 (Visual Basic)

概念

集合初始值设定项概述 (Visual Basic)

管理 Visual Basic 中的对象组

Visual Basic 集合类

使用集合管理对象 (Visual Basic)