One of the changes from VB6 to VB.NET was the removal of non-zero lower bounded arrays… a concept discussed by Eric Gunnerson recently, and now covered by Paul… giving it a bit of VB perspective.

Non-zero lower bounded arrays (the other side of the coin)

… To finesse this issue, the CLR designers came up with a compromise: there would be two kinds of arrays in the CLR. One kind, which I’ll call “arrays,” were just like normal VB arrays – they could have non-zero lower bounds. The other kind, which I’ll call “vectors,” were a restricted type of array: they could only be 1-dimensional, and their lower bound was fixed to be zero. This compromise allowed VB to have its arrays, and also allowed the C-derived languages to optimize the most common array case. Everyone was happy, right? …