OK, I just consulted the MSDN.
Here's the skinny:
It looks like Arrays in VB are now zero-based (I'm pretty sure they weren't in VB6, but that was years ago). What that means, if you're not sure, is that all your counting begins at 0. For instance, if you wanted to find the first item in the array foo, you'd look at foo(0).
VB has one major flaw when it comes to arrays, IMO, and it's likely to screw you up.
If you want to create an integer array with 10 elements, you'd do this:
Dim foo(9) as Integer
When creating arrays of a specific size in VB, the number in parenthesis is the highest element you want for your arrays. So the code above creates an array called foo with indexes 0,1,2,3,4,5,6,7,8,9 (which total to 10 indexes). This is different from like every other language I've programmed in, because everything else I've used has you create arrays based on the number of elements in the array, and NOT the highest index. I won't go into this much, though, as it's likely to just confuse you.
So, again, when you're iterating through your array, begin with 0, and work until the end, as follows:
Dim foo(4) as Integer
dim total as Integer
'for the sake of illustration, let's assume foo has values as follows:
'foo(0)=1
'foo(1)=2
'foo(2)=3
'foo(3)=4
'foo(4)=5
total = 0
For I = 0 to 4
total = total + foo(i)
Next
MessageBox.Show(total.ToString())
When the code works through itself, it essentially does:
total=0+foo(0) '0+1
total=1+foo(1) '1+2
total=3+foo(2) '3+3
total=6+foo(3) '6+4
total=10+foo(4) '10+5
which adds up 10 15.
Now, multi-dimensional arrays are essentially the same exact thing, except you're making your array a grid instead of just a single row of data.
So, in the above case that Dim foo(4) as Integer would result in something that visually would look like this:
0 1 2 3 4
0[ ][ ][ ][ ][ ]
A multi-dimensional array is very similar, but it expands the whole thin so it's like a grid, as follows:
Dim foo(4,4) as Integer
which visually looks like this
0 1 2 3 4
0[ ][ ][ ][ ][ ]
1[ ][ ][ ][ ][ ]
2[ ][ ][ ][ ][ ]
3[ ][ ][ ][ ][ ]
4[ ][ ][ ][ ][ ]
So when you want to access that, data, pretend you're playing Battleship. You need to know both the row and column of the data you're after so that you can access it.
for instance:
Dim foo(4,4) as Integer
Dim value as Integer
...
value = foo(2,4)
And again, if you need to iterate through everything in a multi-dimensional array, you can next For loops like I did in my above post.
Does this help to clear anything up at all?