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

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

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

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

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

class Sample {
  static void Main()
  {
    // 5個の要素を持つ1次元配列
    int[] arr = new int[5];

    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次元配列
    int[,] matrix = new int[3, 4];

    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次元配列
    int[,,] cube = new int[4, 2, 3];

    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次元配列
    int[,,,] tesseract = new int[2, 2, 2, 2];

    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));
  }
}
実行結果
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