本記事では複数の値を格納し、多次元に扱うことができる『多次元配列』の解説します。
ちなみに配列の理解がイマイチな方は下の記事を読んでみてください。
多次元配列(二次元配列)の書式
ここでは多次元配列の書式について解説します。
また、ここでは多次元配列の書式である「宣言のみ」「宣言・初期化を同時に行う」の2つを紹介します。
「宣言のみ(初期化しない)」の書式
指定 | 意味 |
配列名 | 「配列の名前」を指定 |
型名 | 「格納する値の型」を指定 |
行数 | 「1次元の数」を指定 |
列数 | 「2次元の数」を指定 |
ここでの2次元配列の具体的な例は下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; namespace sample { class Program { static void Main() { var numbers = new int[3, 4]; numbers[0, 0] = 1; numbers[2, 3] = 12; Console.WriteLine(numbers[0, 0]); Console.WriteLine(numbers[2, 3]); } } } |
実行結果
1
12
上のコードで宣言した2次元配列のイメージは下の通りです。
9行目:var numbers = new int[3, 4];
11行目:numbers[0, 0] = 1;
12行目:numbers[2, 3] = 12;
9行目で3行・4列の配列を宣言している。
そして、11行目ではインデックス[0,0]に”1”を、12行目で[2,3]に”12”を格納している。
「宣言と初期化を同時にする」ときの書式
ここでの2次元配列の具体的な例は下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; namespace sample { class Program { static void Main() { var numbers = new int[,] { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; Console.WriteLine(numbers[0, 0]); Console.WriteLine(numbers[2, 3]); } } } |
実行結果
1
12
上のコードで宣言した2次元配列のイメージは下の通りです。
9行目:var numbers = new int[,]
10行目:{
11行目:{1,2,3,4},
12行目:{5,6,7,8},
13行目:{9,10,11,12}
14行目:};
9行目で大きさ指定ナシで配列を宣言している。
そして、11行目では配列1行目、12行目で2行目、13行目で3行目に値を格納している。
多次元配列の次元ごとの要素数を取得【GetLenghtメソッド】
配列の要素数を取得する際には『配列.Length』を使います。
ですが、多次元配列の場合は複数の次元があるため『配列.GetLength』を使います。
GetLengthメソッドの動きを確認
下は「1次元と2次元の数をコンソールに表示させる」コードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; namespace sample { class Program { static void Main() { var numbers = new int[,] { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; Console.WriteLine($"1次元の数:{numbers.GetLength(0)}"); Console.WriteLine($"2次元の数:{numbers.GetLength(1)}"); } } } |
実行結果
1次元の数:3
2次元の数:4
GetLengthメソッドの具体的な使い方
次にGetLengthメソッドのどのような場面で使うかについてです。
多くの場合は下のように「配列の全ての要素にアクセスする」ために使われます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System; namespace sample { class Program { static void Main() { var numbers = new int[,] { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; for (var row=0;row<numbers.GetLength(0);row++) { for (var col = 0; col < numbers.GetLength(1); col++) { Console.WriteLine(numbers[row, col]); } } } } } |
スポンサーリンク