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?
All arrays must be zero-indexed. In Microsoft Visual Basic 6.0, you can define arrays with the lower bounds and upper bounds set to any integer. In Microsoft Visual Basic . NET, the lower bound of every array dimension is zero (0).
In computer science, array indices usually start at 0 in modern programming languages, so computer programmers might use zeroth in situations where others might use first, and so forth.
An array arr[i] is interpreted as *(arr+i). Here, arr denotes the address of the first array element or the 0 index element. So *(arr+i) means the element at i distance from the first element of the array. So array index starts from 0 as initially i is 0 which means the first element of the array.
Zero-based array indexing is a way of numbering the items in an array such that the first item of it has an index of 0, whereas a one-based array indexed array has its first item indexed as 1. Zero-based indexing is a very common way to number items in a sequence in today's modern mathematical notation.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With