Visual Basic 中的集合

一般而言,「集合」(Collection) 會是一個物件,可用於群組和管理相關的物件。 例如,每個 Form 都會有控制項集合 (您可以透過表單的 Controls 屬性 (Property) 存取此集合)。這個集合是用於表示該表單上所有控制項的物件。 這允許您利用它的索引來擷取集合中的控制項,並且使用 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,所以集合是不相容的。 兩種集合會從不同的類別進行實作。 它們的方法類似但不相同,且索引配置也不同。

以零起始和以 1 起始的集合

依據起始索引而定,集合可以是「以零起始」(Zero-Based) 或「以一起始」(One-Based)。 前者表示集合中第一個項目的索引是 0,後者則是 1。 以零起始集合的範例為 .NET Framework Controls 集合,本頁稍早已討論過。 Visual Basic Collection 物件則是以一起始的集合範例。

因為以一起始之集合範例的索引範圍是從 1 到 Count 屬性的值,且此值會傳回集合中的項目數,因此對 Visual Basic 使用者而言會較容易瞭解。 相較之下,以零起始之集合的索引範圍則是從 0 到 Count 屬性的值減 1。 當索引值為基底實值的位移 (Offset) 或是對應到以零起始之列舉型別的成員時,則適用於以零起始的集合。

為達標準化的目的,.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 方法。

請參閱

工作

HOW TO:建立物件集合 (Visual Basic)

HOW TO:建立物件的陣列 (Visual Basic)

HOW TO:加入、刪除和擷取集合項目 (Visual Basic)

HOW TO:在類別中定義集合 (Visual Basic)

HOW TO:在 Visual Basic 中逐一查看集合

疑難排解集合 (Visual Basic)

概念

集合初始設定式概觀 (Visual Basic)

在 Visual Basic 中管理物件群組

Visual Basic 集合類別

使用集合管理物件 (Visual Basic)