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?
The short answer is that array lower bounds are what you tell them to be.
The default is base
0
(unless overridden byOption Base 1
), but you can declare lower bound to any value you want (Dim arr(-42 To 42)
is as valid asDim(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 a1
based array.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 whenOption Base 1
is declared at the top of the code module.It's
Collections
that aren't - when you loop throughCollection
objects I'm pretty sure that they are 1 based.