[C#]Listを初期化する(コレクション初期化子とオブジェクト初期化子)


Listを初期化する書き方について。
簡単なことなんですが、いろいろな言語触ってると書き方を忘れてしまうので。。自分向けメモです。



stringクラスを内包するListを初期化

stringを内包するSystem.Collections.Generic.Listを初期化する場合は以下の様に書きます。

var val = new System.Collections.Generic.List(){
    "aaa"
    ,"bbb"
};

では、独自クラスの場合はどのように書けばよいのでしょうか

独自クラスを内包するListを初期化してみる

例として、以下の様な”社員クラス”があったとします

    class Employee
    {
        /// <summary>
        /// 名前
        /// </summary>
        public string FirstName { get; set; }
        /// <summary>
        /// 苗字
        /// </summary>
        public string LastName { get; set; }
        /// <summary>
        /// 生年月日
        /// </summary>
        public DateTime Birthday { get; set; }
        /// <summary>
        /// 性別 (1:男性 2:女性)
        /// </summary>
        public int Gender { get; set; }
        /// <summary>
        /// 入社日
        /// </summary>
        public DateTime Joined { get; set; }
    }

で、このクラスを内包するSystem.Collections.Generic.Listを初期化するコードは以下になります

var emp = new System.Collections.Generic.List()
{
     new Employee{FirstName="山田", LastName="太郎", Birthday=new DateTime(1990,10,2,0,0,0), Joined=new DateTime(2012,4,1,0,0,0), Gender=1}
    ,new Employee{FirstName="鈴木", LastName="花子", Birthday=new DateTime(1992,12,4,0,0,0), Joined=new DateTime(2014,4,1,0,0,0), Gender=2}
};      

上記コードの内、

     new Employee{FirstName="山田", LastName="太郎", .....}

の部分は、オブジェクトを初期化する際の書き方(オブジェクト初期化子)です。