升级建议:使用以零为界限的数组

更新:2007 年 11 月

在 Visual Basic 6.0 中可以定义具有任意整数下限和上限的数组。还可以使用 ReDim 将变量重新指定为数组。为提供与其他语言之间的互操作性,Visual Basic 2008 中数组的下限必须是零,且除非以前曾用 Dim 关键字声明了数组变量,否则不能使用 ReDim。尽管这限制了定义数组的方式,但使您可以在 Visual Basic 2008 和其他任何 .NET Framework 语言之间传递数组。下面的示例显示了这种限制:

'BAD: LBound must be 0
Dim a(1 To 10) As Integer
'BAD: Can't use ReDim without Dim
ReDim v(10)
'OK: Creates an array of 11 integers
Dim b(10) As Integer
'OK: Can ReDim previously Dimed variable
ReDim b(5) As Integer

副作用是 Option Base 语句将从语言中移除。

在项目升级到 Visual Basic 2008 后,将从代码中移除所有 option base 语句。如果数组的界限是零,则将不对其进行更改。但是,如果数组的界限非零,那么会移除下限并向代码中插入警告,如下面的示例所示:

Dim a(1 To 10) As Integer

更改为:

' UPGRADE_WARNING: Lower bound of an array was changed from 1 to 0.
Dim a(10) As Integer

在许多情况下,升级的代码将如以前一样工作。但是,如果应用程序逻辑依赖的下限为 1,那么需要进行一些修改。Dim、ReDim 和 LBound 语句标记有警告以帮助您查看所做的更改。

因此,应在 Visual Basic 6.0 代码中使用零界限数组,避免将 ReDim 用作数组声明,并避免使用 Option Base 1。

请参见

其他资源

有关升级的语言建议