集合疑难解答 (Visual Basic)

本页列出了使用集合时可能发生的一些常见问题。

使用了错误的集合类型

Visual Basic 开发人员可以使用多种类型的集合,包括 Visual Basic Collection 类和 .NET Framework 提供的集合类。 这些类互不兼容。 这意味着,如果您将某个变量声明为一种集合类型,就不能将该另一类型的对象分配给该变量。 此外,您只能访问已声明的集合类型的方法和属性。

Visual Basic 和 .NET Framework 集合类之间的主要差异包括:

  • 索引基准。.NET Framework 集合从零开始,而 Visual Basic 集合从一开始。 这意味着,Visual Basic 集合元素的索引值从 1 开始,直至 Count 属性的值,而 .NET Framework 集合元素的索引值则从 0 开始,直至比集合的 Count 属性值小 1 的值。

  • **元素类型。**Visual Basic 集合支持类型为 Object 的元素,该集合不是类型安全的,因为您可以添加任何数据类型的元素。 由于编译器必须将元素“装箱”和“取消装箱”才能将这些元素在 Object 数据类型 之间来回转换,因此这通常会导致性能下降。 某些 .NET Framework 集合也含有类型为 Object 的元素,但另外许多集合都是强类型的(即这些集合支持某个特定类型的元素),这样,这些集合就是类型安全的,这通常可以使性能最优化。

  • **键控元素。**Visual Basic 集合允许您在向其中添加元素时,指定一个键。 该键是一个唯一的 String 值,日后可以用它来访问该特定元素。 .NET Framework 集合随键的不同而不同。 有些集合支持键,有些不支持。

包含各种集合类定义的命名空间如下:

正确方法

确定哪种类型的集合最适合您的需求。 将您的集合变量声明为该类型,并确保创建一个相同类型的对象。 使用完全限定来确保指定您想要指定的集合类型。 下面的示例显示了两个带有完全限定的声明。

Dim customers As New Microsoft.VisualBasic.Collection()
Dim stringQueue As New System.Collections.Generic.Queue(Of String)

创建了特定类型的集合后,确保仅使用针对该类型定义的方法和属性。 设置 Option Strict On,以便在编译时捕获任何不正确的对象分配或成员访问。

请参见

参考

Collection

Option Strict 语句

概念

Visual Basic 中的集合