数组索引是否在VB6中基于0?

Jad*_*ias 17 arrays vb6 vb6-migration

我正在检查VB6代码自动转换为C#并转换someArray(3)为转换器someArray[3].但是相应于旧的代码文档,它应该选择第三个元素而不是第四个元素,就像在翻译版本中那样.

数组索引是否在VB6中基于0?或者他们从1开始?

Jon*_*ton 15

是 - 基于VB6的数组(通常)为0

这种情况的例外情况是使用了显式Dim someArray(1 To 10) as Int语法,或者在Option Base 1代码模块的顶部声明了什么.

Collections不是 - 当你循环通过Collection对象时,我很确定它们是基于1的.

  • "除非使用了显式类型语法"*或*`Option Base 1`已在代码块的顶部声明 (4认同)

chr*_*sen 7

简短的回答是数组下限是你告诉他们的.

默认情况下是基地0(除非被覆盖Option Base 1),但是你可以声明下界到你想要的任何值(Dim arr(-42 To 42)是为有效Dim(3)).

此外,如果某个对象返回一个数组,则其下限是该对象设置的任何值.例如,Excel Range.Value引用将返回1基于数组.