次の例は、Lengthプロパティ・Rankプロパティ・GetLengthメソッドなどと組み合わせて多次元配列を扱う例です。 このコードでは、任意の次元数・要素数の多次元配列を引数にとり、その多次元配列の次元・長さ・要素数・格納されている全要素を表示するメソッドを実装しています。 どのような配列もArrayクラスから暗黙的に派生しているので、引数の型をArrayとすることで任意の配列を受け取れるようにしています。 また、配列内の全要素はforeach文と同じ順で列挙されるようにしています。

なお、このコードで使用しているGetValueメソッドは、引数としてインデックスを渡すことにより、配列内の該当するインデックスの値を取得することができるメソッドです。 詳しくは配列操作 §.配列の作成・要素の取得と設定 (CreateInstance, GetValue, SetValue)で解説しています。

任意の次元数・要素数の配列から、配列の次元・次元ごとの長さ・全要素数を取得する
Imports System

Class Sample
  Shared Sub Print(ByVal arr As Array)
    Console.WriteLine("次元: {0}", arr.Rank)

    Console.Write("長さ: ")

    For d As Integer = 0 To arr.Rank - 1
      If 0 < d Then
        Console.Write("×{0}", arr.GetLength(d))
      Else
        Console.Write("{0}", arr.GetLength(d))
      End If
    Next

    Console.WriteLine()

    Console.WriteLine("要素数: {0}", arr.Length)

    Console.Write("要素: ")

    ' 取得したい要素のインデックスを指定するための配列
    Dim indices(arr.Rank - 1) As Integer

    Do
      ' [step1] step3でインデックスをインクリメントした結果、各次元の長さに達したかどうか調べる
      For d As Integer = arr.Rank - 1 To 0 Step -1
        If arr.GetLength(d) <= indices(d) Then
          ' d次元目のインデックスがd次元目の長さを越えている場合
          If d = 0 Then
            ' 1次元目(d = 0)の場合は、インクリメントした結果が1次元目の長さに達しているので終了する
            Console.WriteLine()
            Return
          Else
            ' d次元目のインデックスを0に戻し、一つ低い次元(d - 1次元)のインデックスをインクリメントする
            indices(d) = 0
            indices(d - 1) += 1
          End if
        End If
      Next

      ' [step2] 指定されたインデックスの要素を取得して表示
      Console.Write("{0}, ", arr.GetValue(indices))

      ' [step3] もっとも高い次元のインデックスをインクリメント
      indices(arr.Rank - 1) += 1
    Loop
  End Sub

  Shared Sub Main()
    ' 5個の要素を持つ1次元配列
    Dim arr As Integer() = { _
      0, 1, 2, 3, 4 _
    }

    Print(arr)
    Console.WriteLine()

    ' 3×4個の要素を持つ2次元配列
    Dim matrix As Integer(,) = { _
      {0, 1, 2, 3}, _
      {4, 5, 6, 7}, _
      {8, 9, 10, 11} _
    }

    Print(matrix)
    Console.WriteLine()

    ' 4×2×3個の要素を持つ3次元配列
    Dim cube As Integer(,,) = { _
      {  { 0,  1,  2},  { 3,  4,  5}  }, _
      {  { 6,  7,  8},  { 9, 10, 11}  }, _
      {  {12, 13, 14},  {15, 16, 17}  }, _
      {  {18, 19, 20},  {21, 22, 23}  } _
    }

    Print(cube)
    Console.WriteLine()

    ' 2×2×2×2個の要素を持つ4次元配列
    Dim tesseract As Integer(,,,) = { _
      {  {  {0, 1},  { 2,  3}  },  {  { 4,  5},  { 6,  7}  }  }, _
      {  {  {8, 9},  {10, 11}  },  {  {12, 13},  {14, 15}  }  } _
    }

    Print(tesseract)
    Console.WriteLine()

    ' 1×1×1×1×1個の要素を持つ5次元配列
    Print(New Integer(0, 0, 0, 0, 0) {})
    Console.WriteLine()

    ' 1×0×1×0×1×0個の要素を持つ6次元配列
    Print(New Integer(0, -1, 0, -1, 0, -1) {})
    Console.WriteLine()
  End Sub
End Class
実行結果
次元: 1
長さ: 5
要素数: 5
要素: 0, 1, 2, 3, 4, 

次元: 2
長さ: 3×4
要素数: 12
要素: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 

次元: 3
長さ: 4×2×3
要素数: 24
要素: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 

次元: 4
長さ: 2×2×2×2
要素数: 16
要素: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 

次元: 5
長さ: 1×1×1×1×1
要素数: 1
要素: 0, 

次元: 6
長さ: 1×0×1×0×1×0
要素数: 0
要素: