C#において二次元配列や二次元リスト(List)を一括で初期化する方法はプログラミングにおいてよく使用されます。
この記事では初心者向けに簡潔に解説し例を交えながら、
C#における二次元配列と二次元リストの一括初期化方法を学びましょう。
配列の初期化
まずは通常の配列の初期化についておさらいします。
// 配列の要素数を指定して初期化
int[] numbers = new int[5];
上記の例配列 numbersはint型の要素数5で初期化しています。
各要素は型に応じてデフォルトの初期値で初期化されるので今回は0で初期化されます。
二次元配列を特定の値で一括で初期化
初期化リストを使用して二次元配列を一括で初期化することができます。
int[,] matrix = new int[,]{{ 1, 2, 3 },{ 4, 5, 6 },{ 7, 8, 9 }};
System.Console.WriteLine(matrix[1,1]);//結果:5
// 10x10の2次元配列を0で初期化
int[,] matrix2 = new int[10,10];
System.Console.WriteLine(matrix2 [1,1]);//結果:0
// 3x3の2次元配列を特定の値(例: 42)で初期化
int[,] matrixCustomValue = Enumerable.Range(0, 3).Select(i => Enumerable.Repeat(42, 3).ToArray()).ToArray();
上記の例では、初期化リスト内に各行の要素を指定しmatrixという名前の2次元配列を初期化しています。
また通常の配列同様に要素数を指定して初期化することも可能です。
配列の要素数が未定の場合は型の使い分けで対応できるよ
Initializeにて2次元配列を一括で初期化
Array.Initialize()メソッドを使用して指定した値で二次元配列を初期化することができます。
int[,] matrix = new int[3, 3];
Array.Initialize(matrix, 0);
Array.Initialize()メソッドを使用して各要素を指定した値で初期化しています(この例では0で初期化しています)
これらの方法を使用して二次元配列を一括で初期化することができます。
C#におけるListの2次元配列を一括で初期化する方法には、以下のようなアプローチがあります。
2次元リストを一括で初期化する
Listの2次元配列を初期化リストを使って一括で初期化することができます。
List<List> matrix = new List<List>{new List { 1, 2, 3 },new List { 4, 5, 6 },new List { 7, 8, 9 }};
// 2次元リストを特定の値(例: 0)で初期化
List<List<int>> matrixCustomValue = Enumerable.Range(0, 3) .Select(i => Enumerable.Repeat(0, 3).ToList()).ToList();
2次元Listを多重ループで初期化する
ネストされたループを使用して、Listの2次元配列を一括で初期化することもできます。
List<List> matrix = new List<List>();
int numRows = 3;
int numCols = 3;
for (int i = 0; i < numRows; i++)
{
List row = new List();
for (int j = 0; j < numCols; j++)
{
row.Add(i * numCols + j + 1);
}
matrix.Add(row);
}
------------------------------------------------------------------------------------------
// 2次元リストを特定の値(例: 10)で初期化
List<List> matrix = new List<List>();
for (int i = 0; i < 3; i++)
{
List row = new List();
for (int j = 0; j < 3; j++)
{
row.Add(10);
}
matrix.Add(row);
}
上記の例では、matrixという名前のListの2次元配列を初期化しています。
外側のループで行を作成し内側のループで各行の要素を追加しています。
これらの方法を使用してListの2次元配列を一括で初期化することができます。
多次元配列を一括初期化する
2次元配列同様に以下のように初期化できます。
// 10x10x10の3次元配列を0で初期化
int[,,] matrix = new int[10,10,10];
System.Console.WriteLine(matrix[1,1,1]);//結果:0
//スマートではないがForループでの初期化
// 3次元配列を特定の値(例: 42)で初期化
int[,,] cubeCustomValue = new int[3, 3, 3];
for (int i = 0; i < cubeCustomValue.GetLength(0); i++)
{
for (int j = 0; j < cubeCustomValue.GetLength(1); j++)
{
for (int k = 0; k < cubeCustomValue.GetLength(2); k++)
{
cubeCustomValue[i, j, k] = 42;
}
}
}
上記の例ではmatrixという名前の2次元配列を初期化しています。
matrixでは各行の要素を中括弧で囲みカンマで区切って指定しています。
まとめ
C#において二次元配列や二次元リスト(List)を一括で初期化する方法は複数あります。
静的な初期化やnew演算子を使った初期化リスト初期化子を使用する方法など状況に応じて適切な方法を選びましょう。
初心者の方もぜひこれらのパターンを覚えて、柔軟に二次元データを扱えるようになりましょう。