C# 配列の初期化と初期値の代入

C#では、配列の初期化と初期値の代入にはさまざまな方法があります。それぞれのパターンを以下にまとめます。


1. 配列宣言と初期化を分ける

int[] numbers;
numbers = new int[5];
  • 配列のサイズを指定して初期化します。
  • 配列の各要素は型に応じたデフォルト値で初期化されます。
  • intなら0stringならnull

2. 宣言時にサイズと初期値を指定

int[] numbers = new int[5] { 1, 2, 3, 4, 5 };
  • サイズと初期値を同時に指定します。
  • 初期化子の数と配列サイズが一致している必要があります。

3. サイズ省略と初期値設定

int[] numbers = { 1, 2, 3, 4, 5 };
  • 配列サイズを明示的に指定せずに初期化します。
  • 初期化子からサイズが自動的に推測されます。

4. 多次元配列の初期化

サイズのみ指定する場合

int[,] matrix = new int[2, 3];
  • 2行3列の多次元配列が作成されます。

サイズと初期値を同時に指定

int[,] matrix = new int[2, 3]
{
    { 1, 2, 3 },
    { 4, 5, 6 }
};

サイズ省略と初期値設定

int[,] matrix =
{
    { 1, 2, 3 },
    { 4, 5, 6 }
};

5. ジャグ配列(配列の配列)の初期化

サイズのみ指定

int[][] jaggedArray = new int[3][];
  • 各要素はnullで初期化されます。

サイズと初期値を指定

int[][] jaggedArray = new int[3][]
{
    new int[] { 1, 2 },
    new int[] { 3, 4, 5 },
    new int[] { 6 }
};

サイズ省略と初期値設定

int[][] jaggedArray =
{
    new int[] { 1, 2 },
    new int[] { 3, 4, 5 },
    new int[] { 6 }
};

6. Arrayクラスを使用した初期化

Array numbers = Array.CreateInstance(typeof(int), 5);
numbers.SetValue(1, 0); // インデックス0に1を設定
numbers.SetValue(2, 1); // インデックス1に2を設定
  • 型やサイズを動的に指定したい場合に便利です。

7. 初期値を一括で同じ値に設定

LINQを使用

int[] numbers = Enumerable.Repeat(5, 10).ToArray();
// すべての要素が5の長さ10の配列

ループを使用

int[] numbers = new int[10];
for (int i = 0; i < numbers.Length; i++)
{
    numbers[i] = 5;
}

8. 配列初期化の注意点

  • サイズを指定した後に初期化子({})を使うことはできません。
  // 以下はエラーになります
  int[] numbers = new int[5] { 1, 2, 3 };

配列サイズと初期化子の要素数が一致していない場合にエラーになります。


まとめ

配列の初期化にはさまざまな方法があります。それぞれの方法を理解し、適切な場面で使い分けることで、効率的なコードを書くことができます。

配列

Posted by hidepon