Share via


使用集合管理物件

更新:2007 年 11 月

集合相當適用於管理各種不同的物件。您可以將物件加入集合或從中移除,依據索引或索引鍵來擷取它們,並使用 For Each...Next 陳述式 (Visual Basic) 逐一查看集合中的所有項目。

Type-Unsafe 集合

不過,集合的這種彈性卻可能減低您類別的強固性。例如,Visual Basic 提供的集合會將其所有項目儲存為型別 Object,因此您可以加入任何資料型別的項目。您無法確定加入的資料型別皆適當無誤,因此當您存取項目時,必須將該項目從 Object 轉換成需要的資料型別。

特殊化集合

.NET Framework 會提供 Visual Basic 集合的多種選擇。System.Collections 命名空間包含具有特定功能的集合類別,例如佇列 (Queue) 或排序清單,而 System.Collections.Specialized 命名空間則包含具有特殊性質的集合類別,例如 HybridDictionary

Type-Safe 集合

若要避免型別 Object 項目的缺點,您可以使用 System.Collections.Generic 命名空間的「泛型」集合。這些集合能提供「型別安全 (Type Safety)」,並讓您將集合項目限制為唯一的特定資料型別。

使用集合的方法

一般來說,使用集合來實作物件管理有三種方式。考量定義 widgetRepository 類別的應用程式,此應用程式會組織並公開 widget 物件給用戶端元件。若要實作集合的 widgetRepository,您可以使用下列其中一種策略。

  • **使用集合類型。**在 widgetRepository 類型中,宣告 widgetsColl 變數做為 Visual Basic 集合類別的執行個體,或 System.CollectionsSystem.Collections.GenericSystem.Collections.Specialized 命名空間的其中一個類別。使變數成為公用變數,並使用 New (Visual Basic) 關鍵字建立集合的執行個體。如需詳細資訊,請參閱 HOW TO:在類別中定義集合

  • **繼承 (Inheritance) 集合基底類別。**繼承 CollectionBase 類別來實作自己的 widgetsColl 類別。在 widgetRepository 類別中,請定義傳回該執行個體的 widgetsColl 類別和屬性的執行個體。如需詳細資訊,請參閱 HOW TO:在類別中定義集合

  • **自己撰寫集合。**撰寫適當的類別及程序,即可在 widgetRepository 類別中實作集合功能。如果類別需要具有集合型別的功能,但又不繼承任何現有的集合類別,則這個方法會是最適用的。這個情況不常發生,但是您的類別有時會需要繼承自類別而非集合類別。由於無法從一個以上的類別繼承,您必須定義並實作集合成員。

請參閱

概念

管理物件群組

Visual Basic 集合類別

參考

System.Collections

System.Collections.Generic

System.Collections.Specialized