1次元配列でLengthプロパティを参照すると要素数が取得できます。 一方、多次元配列でLengthプロパティを参照した場合、返される値は多次元配列の全要素数となります。 つまり、3×4個の要素を持つ2次元配列の場合、Lengthプロパティは12を返します。

次元毎の長さを取得したい場合は、GetLengthメソッドを呼び出します。 取得したい次元の番号を指定してGetLengthメソッドを呼び出すことで、多次元配列におけるその次元の長さが返されます。

GetLengthメソッドでは、最初の次元は0、その次の次元は1として扱われるため、例えば3次元配列の場合は0~2の値を次元の番号として指定します。 1次元配列に対してもGetLengthメソッドを呼び出すことはできます。 この場合、返される結果はLengthプロパティと同じです。

また、Rankプロパティを参照することで、多次元配列の次元数(次元の高さ)を取得できます。 1次元配列では1、2次元配列では2が返されます。

多次元配列の全要素数・次元数・次元ごとの長さを取得する
Imports System

Class Sample
  Shared Sub Main()
    ' 5個の要素を持つ1次元配列
    Dim arr(4) As Integer

    Console.WriteLine("arr.Length = {0}", arr.Length)
    Console.WriteLine("arr.Rank = {0}", arr.Rank)
    Console.WriteLine("arr = {0}", arr.GetLength(0))
    Console.WriteLine()

    ' 3×4個の要素を持つ2次元配列を作成
    Dim matrix(2, 3) As Integer

    Console.WriteLine("matrix.Length = {0}", matrix.Length)
    Console.WriteLine("matrix.Rank = {0}", matrix.Rank)
    Console.WriteLine("matrix = {0}×{1}", matrix.GetLength(0), matrix.GetLength(1))
    Console.WriteLine()

    ' 4×2×3個の要素を持つ3次元配列
    Dim cube(3, 1, 2) As Integer

    Console.WriteLine("cube.Length = {0}", cube.Length)
    Console.WriteLine("cube.Rank = {0}", cube.Rank)
    Console.WriteLine("cube = {0}×{1}×{2}", cube.GetLength(0), cube.GetLength(1), cube.GetLength(2))
    Console.WriteLine()

    ' 2×2×2×2個の要素を持つ4次元配列
    Dim tesseract(1, 1, 1, 1) As Integer

    Console.WriteLine("tesseract.Length = {0}", tesseract.Length)
    Console.WriteLine("tesseract.Rank = {0}", tesseract.Rank)
    Console.WriteLine("tesseract = {0}×{1}×{2}×{3}", tesseract.GetLength(0), tesseract.GetLength(1), tesseract.GetLength(2), tesseract.GetLength(3))
  End Sub
End Class
実行結果
arr.Length = 5
arr.Rank = 1
arr = 5

matrix.Length = 12
matrix.Rank = 2
matrix = 3×4

cube.Length = 24
cube.Rank = 3
cube = 4×2×3

tesseract.Length = 16
tesseract.Rank = 4
tesseract = 2×2×2×2