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