C# リスト、配列の初期化

C#

コレクション式で初期化

C#12以降、リストや配列がコレクション式で初期化できるようになりました。

int[] numbers = [1, 2, 3, 4, 5];        // int配列の初期化
List<int> numbers = [0, 1, 2, 3, 4];    // intリストの初期化

スプレッド演算子(..)を使って既存の配列を展開して新しい配列を初期化することもできます。

int[] array1 = [1, 2, 3];
int[] array2 = [..array1, 4, 5];  // array1の要素を展開して新しく作成した配列を初期化

リテラルによる初期化

int[] numbers = new int[] { 1, 2, 3, 4, 5 };
int[] numbers = { 1, 2, 3, 4, 5 };    // new int[]は省略可能

numbers = new List<int> { 0, 1, 2, 3, 4 };

宣言と同時に要素をリテラルで指定します。最も一般的といえる方法です。

型推論も可能です。

var numbers = new[] { 1, 2, 3 };  // リテラルから型を推論できる

AddRangeを使った初期化

int[] array = { 1, 2, 3 };
List<int> list = new List<int>();
list.AddRange(array);  // 配列の要素をリストに追加

リストのAddRangeを使えば、既存の配列を使ってリストを初期化できます。

2次元配列の初期化

2次元配列も同様にリテラルで初期化できます。

// 二次元配列の初期化
int[,] matrix = {
    { 1, 2, 3 },
    { 4, 5, 6 }
};

// newキーワードを使った初期化
int[,] anotherMatrix = new int[,] {
    { 10, 20 },
    { 30, 40 }
};

int[,] emptyMatrix = new int[2, 3]; // サイズを指定して初期化(要素はデフォルト値=0)

不規則配列 (Jagged Array) の初期化

不規則配列は以下のように初期化できます。

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

この例は2次元配列ではなく、正確には配列の配列です。このような不規則配列は次の例のようにコレクション式でも初期化することができます。

int[][] jaggedArray =
[
    [1, 2, 3, 4],
    [5, 6],
    [7, 8, 9]
];

なお、多次元配列をコレクション式で初期化することはできません。

コメント

タイトルとURLをコピーしました