多次元配列 (C# プログラミング ガイド)Multidimensional Arrays (C# Programming Guide)

配列は 1 つ以上の配列を持つことができます。Arrays can have more than one dimension. たとえば、次の宣言は、4 行と 2 列の 2 次元の配列を作成します。For example, the following declaration creates a two-dimensional array of four rows and two columns.

int[,] array = new int[4, 2];

次の宣言は、4、2、3 の 3 次元配列を作成します。The following declaration creates an array of three dimensions, 4, 2, and 3.

int[, ,] array1 = new int[4, 2, 3];

配列の初期化Array Initialization

次の例に示すように、宣言時に配列を初期化することができます。You can initialize the array upon declaration, as is shown in the following example.

// Two-dimensional array.
int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
// The same array with dimensions specified.
int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
// A similar array with string elements.
string[,] array2Db = new string[3, 2] { { "one", "two" }, { "three", "four" },
                                        { "five", "six" } };

// Three-dimensional array.
int[, ,] array3D = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } }, 
                                 { { 7, 8, 9 }, { 10, 11, 12 } } };
// The same array with dimensions specified.
int[, ,] array3Da = new int[2, 2, 3] { { { 1, 2, 3 }, { 4, 5, 6 } }, 
                                       { { 7, 8, 9 }, { 10, 11, 12 } } };

// Accessing array elements.
System.Console.WriteLine(array2D[0, 0]);
System.Console.WriteLine(array2D[0, 1]);
System.Console.WriteLine(array2D[1, 0]);
System.Console.WriteLine(array2D[1, 1]);
System.Console.WriteLine(array2D[3, 0]);
System.Console.WriteLine(array2Db[1, 0]);
System.Console.WriteLine(array3Da[1, 0, 1]);
System.Console.WriteLine(array3D[1, 1, 2]);

// Getting the total count of elements or the length of a given dimension.
var allLength = array3D.Length;
var total = 1;
for (int i = 0; i < array3D.Rank; i++) {
    total *= array3D.GetLength(i);
}
System.Console.WriteLine("{0} equals {1}", allLength, total);

// Output:
// 1
// 2
// 3
// 4
// 7
// three
// 8
// 12
// 12 equals 12

また、順位を指定せずに配列を初期化することもできます。You also can initialize the array without specifying the rank.

int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };

初期化せずに配列変数を宣言する場合、new 演算子を使用して配列を変数に代入する必要があります。If you choose to declare an array variable without initialization, you must use the new operator to assign an array to the variable. new の使用を次の例に示します。The use of new is shown in the following example.

int[,] array5;
array5 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };   // OK
//array5 = {{1,2}, {3,4}, {5,6}, {7,8}};   // Error

次の例では、特定の配列要素に値を代入します。The following example assigns a value to a particular array element.

array5[2, 1] = 25;

同様に、次の例では、特定の配列要素の値を取得して、それを変数 elementValue に代入します。Similarly, the following example gets the value of a particular array element and assigns it to variable elementValue.

int elementValue = array5[2, 1];

次のコード例では、配列要素を既定値に初期化します (ジャグ配列を除く)。The following code example initializes the array elements to default values (except for jagged arrays).

int[,] array6 = new int[10, 10];

参照See Also