0

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.)

1

1 Answer 1

0

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).

Sign up to request clarification or add additional context in comments.

1 Comment

It's not strictly true that arrays in VB.Net always have a lower bound of zero, see this overload of Array.CreateInstance. It's just that anyone found writing such code should never be allowed near computers again.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.