集合提供一种管理各种对象的理想方法。 可以在集合中添加和移除对象、根据索引或键检索它们,以及使用 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 变量声明为 Collection 类的实例,或声明为以下命名空间中某个类的实例:System.Collections、System.Collections.Generic 或 System.Collections.Specialized。 将该变量设置为公共变量,并使用 New 运算符 (Visual Basic) 关键字创建集合的一个实例。 有关更多信息,请参见如何:在类中定义集合 (Visual Basic)。
-
**继承集合基类。**通过继承 CollectionBase 类来实现您自己的 widgetsColl 类。 在 widgetRepository 类中,定义 widgetsColl 类的一个实例,以及返回该实例的一个属性。 有关更多信息,请参见如何:在类中定义集合 (Visual Basic)。
-
**自己编写集合。**通过编写适当的类和过程,在 widgetRepository 类中实现集合功能。 如果需要类中带有集合功能,但无法从任何vb.net教程现有集合类继承时,这种方法最为有用。 这是可能实现的,例如,在极少数情况下,类需要从集合类以外的类继承。 由于它不能从多个类继承,您必须定义并实现集合成员。