数组疑难解答 (Visual Basic)

本页列出了使用数组过程中出现的一些常见问题。

声明和初始化数组时的编译错误

如果错误理解用于声明、创建和初始化数组的规则,将产生编译错误。 下面列出了最常见的错误原因:

  • 在声明数组变量时,在指定维长度后提供了 New 运算符 (Visual Basic) 子句。 以下代码行显示了此类型的无效声明。

    Dim INVALIDsingleDimByteArray(2) As Byte = New Byte()

    Dim INVALIDtwoDimShortArray(1, 1) As Short = New Short(,)

    Dim INVALIDjaggedByteArray(1)() As Byte = New Byte()()

  • 指定的维长度超过了交错数组的顶级数组。 以下代码行显示了此类型的无效声明。

    Dim INVALIDjaggedByteArray(1)(1) As Byte

  • 在指定元素值时遗漏了 New 关键字。 以下代码行显示了此类型的无效声明。

    Dim INVALIDoneDimShortArray() As Short = Short() {0, 1, 2, 3}

  • 提供 New 子句时没有使用括号 ({})。 以下代码行显示了此类型的无效声明。

    Dim INVALIDsingleDimByteArray() As Byte = New Byte()

    Dim INVALIDsingleDimByteArray() As Byte = New Byte(2)

    Dim INVALIDtwoDimShortArray(,) As Short = New Short(,)

    Dim INVALIDtwoDimShortArray(,) As Short = New Short(1, 1)

访问的数组超出界限

在初始化数组的过程中,将为每一维指定一个上限和一个下限。 每次访问数组元素时,都必须为每一维指定一个有效的索引或下标。 如果任何索引低于其下限或高于其上限,将引发 IndexOutOfRangeException 异常。 编译器无法检测到这种错误,因而在运行时将发生错误。

tk3e4df5.collapse_all(zh-cn,VS.110).gif确定界限

如果其他组件向您的代码中传递数组(如作为过程参数),您将不清楚该数组的大小或其维长度。 此时,您应首先确定数组每一维的上限,然后再尝试访问任何数组元素。 如果数组不是使用 Visual Basic New 子句创建的,则下限可能不是 0,因此,最好也同时确定其下限。

tk3e4df5.collapse_all(zh-cn,VS.110).gif指定维度

在确定多维数组的界限时,请注意维度的指定方式。 GetLowerBoundGetUpperBound 方法的 dimension 参数是从 0 开始的,而 Visual Basic LBoundUBound 函数的 Rank 参数是从 1 开始的。

请参见

任务

如何:在 Visual Basic 中初始化数组变量

其他资源

数组 (Visual Basic)