使用集合管理对象

更新:2007 年 11 月

集合提供一种管理各种对象的理想方法。可以在集合中添加和移除对象、根据索引或键检索它们,以及使用 For Each...Next 语句 (Visual Basic) 循环访问集合中的项。

类型不安全集合

但是,集合极强的灵活性可能会破坏类的可靠性。例如,由 Visual Basic 提供的集合将其所有元素存储为 Object 类型,使您可以添加任意数据类型的项。没有任何保护措施来防止添加不适当的数据类型,当您访问某个元素时,必须将其从 Object 转换为所需的数据类型。

专用集合

.NET Framework 提供了 Visual Basic 集合的几种替代项。System.Collections 命名空间包含具有特定功能的集合类,如队列或排序列表,而 System.Collections.Specialized 命名空间包含特殊性质的集合类,如 HybridDictionary

类型安全集合

为了避免 Object 类型元素的缺陷,可以使用 System.Collections.Generic 命名空间的泛型集合。这些集合提供“类型安全”,使您得以将集合的元素限制为某个特定的数据类型。

使用集合的方法

可以采用三种常规方法使用集合来实现对象管理。考虑一个定义 widgetRepository 类的应用程序,它为客户组件组织和公开 widget 对象。要实现带有集合的 widgetRepository,可以使用以下策略之一。

  • 使用集合类。 在 widgetRepository 类中,将一个 widgetsColl 变量声明为 Visual Basic 集合类的实例,或声明为以下命名空间中某个类的实例: System.CollectionsSystem.Collections.GenericSystem.Collections.Specialized。将该变量设置为公共变量,并使用 New (Visual Basic) 关键字创建集合的一个实例。有关更多信息,请参见如何:在类中定义集合

  • 继承集合基类。 通过继承 CollectionBase 类来实现您自己的 widgetsColl 类。在 widgetRepository 类中,定义 widgetsColl 类的一个实例,以及返回该实例的一个属性。有关更多信息,请参见如何:在类中定义集合

  • 自己编写集合。 通过编写适当的类和过程,在 widgetRepository 类中实现集合功能。如果需要类中带有集合功能,但无法从任何现有集合类继承时,这种方法最为有用。这是可能实现的,例如,在极少数情况下,类需要从集合类以外的类继承。由于它不能从多个类继承,您必须定义并实现集合成员。

请参见

概念

管理对象组

Visual Basic 集合类

参考

System.Collections

System.Collections.Generic

System.Collections.Specialized