【C#】Listを宣言と同時に初期化する方法(コレクション初期化子)

目次

List<T>の初期化

System.Collections.Generic.List<T>は、C#において最もよく使われる動的サイズのコレクション(データの集まり)です。

従来、List<T>に初期データを追加するには、インスタンスを作成した後にAddメソッドを繰り返し呼び出す必要がありました。

// 従来の初期化方法
var weekdays = new List<string>();
weekdays.Add("Monday");
weekdays.Add("Tuesday");
weekdays.Add("Wednesday");

この方法は機能しますが、初期値が決まっている場合、コードが冗長になりがちです。


コレクション初期化子による簡潔な初期化

C# 3.0以降、「コレクション初期化子」という構文が導入されました。これにより、newキーワードでのインスタンス生成と同時に、波括弧{ ... }の中に初期要素を列挙することができます。

この構文は、内部的にはコンパイラが自動的にAddメソッドを呼び出すコードに展開してくれますが、開発者は非常に簡潔な記述で初期化を完了できます。


コード例1:List<string> の初期化

string型(文字列)のリストを、宣言と同時にコレクション初期化子で作成する例です。

using System;
using System.Collections.Generic; // List<T> を使うために必要

public class ListStringInitExample
{
    public static void Main()
    {
        // 宣言と同時に { } 内の要素で List を初期化
        var weekdays = new List<string>
        {
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday"
        };

        Console.WriteLine("--- 曜日のリスト ---");
        
        // string.Join でリストの内容をカンマ区切りで出力
        Console.WriteLine(string.Join(", ", weekdays));
    }
}

出力結果:

--- 曜日のリスト ---
Monday, Tuesday, Wednesday, Thursday, Friday

コード例2:List<int> の初期化

int型(整数)のような値型のリストでも、使い方は全く同じです。

using System;
using System.Collections.Generic;

public class ListIntInitExample
{
    public static void Main()
    {
        // int 型のリストを初期化
        var testScores = new List<int> { 95, 88, 76, 100, 91 };

        int totalScore = 0;
        foreach (var score in testScores)
        {
            totalScore += score;
        }

        Console.WriteLine("--- スコアのリスト ---");
        Console.WriteLine($"要素数: {testScores.Count}");
        Console.WriteLine($"合計点: {totalScore}");
    }
}

出力結果:

--- スコアのリスト ---
要素数: 5
合計点: 450

まとめ

List<T>new List<T> { ... }というコレクション初期化子構文を使って初期化することで、Addメソッドを個別に呼び出す必要がなくなり、コードが大幅に簡潔になります。

配列の初期化構文(new int[] { ... })と非常によく似た感覚で、List<T>のインスタンス生成と初期値の追加を同時に行うことができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次