I declare my array
Dim A(N) As Integer
When I loop from 1 To N
or 0 To N-1
there's an extra value at one end or the other.
What's going on?
(Intended to be a canonical question/answer.)
In VB.NET arrays almost always* have a lower bound of 0
and are declared mentioning their upper bound, not their length.
They did change the VB.NET syntax early on to allow you to remind yourself if needed:
Dim A(0 To N) As Integer
That 0
can't be anything else (such as a 1
or a constant zero).
You can loop through all VB.NET array indexes using
For i = LBound(A) To UBound(A)
or, more simply,
For i = 0 To N
(*) You can use the .NET Framework to create arrays with other lower bounds, but you need to refer to them as Array
and thus with late binding (and probably Option Strict Off
).