2012-01-09 23 views
14

我在查看VB6代码到C#的自动翻译和转换器翻译someArray(3)someArray[3]。但根据旧的代码文档,它应该选择第三个元素,而不是第四个元素,因为它是在翻译版本中进行的。VB6中的数组索引是否基于0?

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

+0

这是数组*声明*还是访问数组*元素*? – 2012-01-09 11:40:10

+0

@Cody访问数组元素。 – 2012-01-09 11:49:32

回答

14

有 - 阵列(通常)基于在VB6

对此的例外是当显式Dim someArray(1 To 10) as Int语法已使用时,或者当在Option Base 1代码模块的顶部被声明0。

这是Collections那不是 - 当你通过Collection循环对象我很确定他们是基于1。

+4

“除非显式类型语法已被使用”*或* Option Base 1已被声明在代码块 – 2012-01-09 11:47:59

+0

@Matt的顶部:好点。 – 2012-01-09 11:49:26

+0

@Matt此语句是否仅影响当前文件? – 2012-01-09 11:52:11

6

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

默认为基础0(除非Option Base 1覆盖),但是你可以声明下界到你想要的任何值(Dim arr(-42 To 42)Dim(3)为有效)。另外,如果一个数组由某个对象返回,它的下界就是该对象设置它的任何东西。例如,ExcelRange.Value引用将返回基于1的阵列。

相关问题