C# - 配列
言語仕様としての配列、要素数が予め決まっている場合に使用する。要素数が未定の場合や追加/削除を行う場合はコレクションを使用した方が良い。
初期設定値を書かない場合は new 演算子を使用して宣言する。初期値がある場合は不要となる。多次元配列は[ ]の中にカンマで区切って要素を宣言する。
初期値を書く場合、最後の要素の後にカンマがあっても良い。
型[ ] 変数名 = new 型[要素数] 型[ , ] 変数名 = new 型[要素数, 要素数]
ジャグ配列の場合は new 演算子を書かなくてはならない。またジャグ配列の要素の表し方は [ , ] ではなく [ ][ ] の様にする。
型[ ][ ]変数名 = new 型[ ][ ]{ new 型[ ]{ 値, ……}, new 型[ ]{ 値, ……}, ……}
要素数は、一次元の通常配列とジャグ配列の場合はLengthプロパティで、多次元配列の場合はGetLength(次元)メソッドで取得する。
using System; //配列 class MyMain { static void Main(string[] args) { //宣言のみ int[] d1 = new int[3]; //初期値設定 d1[0] = 0; d1[1] = 1; d1[2] = 2; PrintArray(d1); //宣言時に初期値を設定 int[] d2 = {10, 20, 30}; PrintArray(d2); //多次元配列 int[,] d3 = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; PrintArray2(d3); //ジャグ配列 int[][] d4 = new int[][] { new int[]{1, 2}, new int[]{3, 4, 5}, new int[]{9, 10, 11, 12}, // 最終要素の後にカンマが有っても良い }; PrintArray3(d4); } //一次元配列を表示 static void PrintArray(int[] a){ for(var i = 0; i < a.Length; i++) Console.WriteLine("{0} : {1}", i, a[i]); } //二次元配列を表示 static void PrintArray2(int[,] a){ for(var i = 0; i < a.GetLength(0); i++) { Console.Write("[{0}, ] : ", i); for(var j = 0; j < a.GetLength(1); j++) { Console.Write("{0,2} ", a[i, j]); } Console.WriteLine(); } } //ジャグ配列(二次元)を表示 static void PrintArray3(int[][] a){ for(var i = 0; i < a.Length; i++) { Console.Write("[{0}][] : ", i); for(var j = 0; j < a[i].Length; j++) { Console.Write("{0,2} ", a[i][j]); } Console.WriteLine(); } } }
実行結果
0 : 0 1 : 1 2 : 2 0 : 10 1 : 20 2 : 30 [0, ] : 1 2 3 4 [1, ] : 5 6 7 8 [2, ] : 9 10 11 12 [0][] : 1 2 [1][] : 3 4 5 [2][] : 9 10 11 12