本页列出了在使用数组时可能出现的一些常见问题。

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

编译错误可能源于对声明、创建和初始化数组的规则的误解。 最常见的错误原因如下:

在数组变量声明中指定维度长度后提供 New 运算符子句。 下面的代码行显示了此类型的无效声明。

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 异常。 编译器无法检测此类错误,因此会在运行时发生错误。

确定边界

如果另一个组件将数组传递给代码(例如作为过程参数传递),你则不知道该数组的大小或其维度的长度。 在尝试访问任何元素之前,应始终为数组的每个维度确定上限。 如果数组不是通过 Visual Basic New 子句创建的,则下限可能不是 0,最安全的做法是也确定该下限。

指定维度

确定多维数组的边界时,请注意指定维度的方式。

GetLowerBound 和 GetUpperBound 方法的 dimension 参数是从 0 开始的,而 Visual Basic LBound 和 UBound 函数的 Rank 参数是从 1 开始的。

请参阅

数组

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

Copyright © 2088 光影峡谷 - 高尔夫模拟游戏活动中心 All Rights Reserved.
友情链接