Are array indexes 0-based in VB6?

2019-04-03 16:43发布

问题:

I'm reviewing an automatic translation of VB6 code to C# and the convertor translated someArray(3) to someArray[3]. But accordingly to the old code documentation it should pick the third element not the fourth as it is doing in the translated version.

Are array indexes 0-based in VB6? Or do they start at 1?

回答1:

Yes - arrays are (generally) 0 based in VB6

The exceptions to this are when the explicit Dim someArray(1 To 10) as Int syntax has been used, or when Option Base 1 is declared at the top of the code module.

It's Collections that aren't - when you loop through Collection objects I'm pretty sure that they are 1 based.



回答2:

The short answer is that array lower bounds are what you tell them to be.

The default is base 0 (unless overridden by Option Base 1), but you can declare lower bound to any value you want (Dim arr(-42 To 42) is as valid as Dim(3)).

Also, if an array is returned by some object, its lower bound is whatever that object sets it to. For example an Excel Range.Value reference will return a 1 based array.