【问题标题】:Are array indexes 0-based in VB6?VB6 中的数组索引是从 0 开始的吗?
【发布时间】:2014-04-28 17:06:40
【问题描述】:

我正在审查 VB6 代码到 C# 的自动翻译,以及将 someArray(3) 翻译成 someArray[3] 的转换器。但根据旧代码文档,它应该选择第三个元素,而不是像在翻译版本中那样选择第四个元素。

VB6 中的数组索引是从 0 开始的吗?还是从 1 开始?

【问题讨论】:

  • 这是数组声明还是访问数组元素
  • @Cody 访问数组元素。

标签: arrays vb6 vb6-migration


【解决方案1】:

是的 - 数组(通常)在 VB6 中为 0

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

不是 Collections - 当您循环遍历 Collection 对象时,我很确定它们是基于 1 的。

【讨论】:

  • “除非使用了显式类型语法” Option Base 1 已在代码块顶部声明
  • @Matt 这个语句是否只影响当前文件?
  • @XMLforDummies:是的 - 在 VB6 中,每个代码文件的顶部都有 Option 语句。
  • @XMLforDummies - 是的,所以如果说你有两个模块并且 ModuleA 声明了 Option Base 1,那么在 ModuleA 中声明的任何数组都是基于 1 的。
  • 除非在数组声明时明确指定。它变得复杂。这就是他们为 VB.NET 更改此设置的原因之一。
【解决方案2】:

简短的回答是,数组下限是您告诉它们的值。

默认值 是基本0(除非被Option Base 1 覆盖),但您可以将下限声明为您想要的任何值(Dim arr(-42 To 42)Dim(3) 一样有效)。

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

【讨论】:

    猜你喜欢
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 2013-12-15
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多