(.Net)C#3.0からオブジェクトのコレクションの初期化が簡潔に書けるようになってた
C#3.0(.Net Framwork3.5)からオブジェクトの初期化が簡単に書けるようになってたようです。
以前(C#2.0)はこのように書いてました。
public class TestClass{
public string Name { get; set; }
public int Id { get; set; }
}
private void button1_Click(object sender, EventArgs e){
//テスト用のデータ生成
List
lst = new List (); lst.Add(new TestClass() );
lst[0].Id = 2;
lst[0].Name = "a";
lst.Add(new TestClass() );
lst[1].Id = 1;
lst[1].Name = "b";
}
しかし、C#3.0からは下記のようにすることで、インスタンス作成時に1行でPublicメンバの初期化ができます。
private void button1_Click(object sender, EventArgs e){
//テスト用のデータ生成
List
lst = new List (); lst.Add(new TestClass() { Name="a",Id = 2 });
lst.Add(new TestClass() { Name="b",Id = 1 });
}
ただこのようなインスタンス作成時の初期化はそれ用のコンストラクタを作成して使うべきだと思うんですがどうでしょう。。
また、インスタンス作成時だけでなくコレクションでも初期化が簡潔に書けるようになったようです。
上記で取り上げたオブジェクトイニシャライザとコレクション初期化子を組み合わせると下記のようになります。(C#)
private void button1_Click(object sender, EventArgs e){
List
dataSource2 = new List () { new TestClass() { Name="a",Id = 2 },
new TestClass() { Name="b",Id = 1 }
};
}
参考: