人気ブログランキング | 話題のタグを見る
(.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<TestClass> lst = new List<TestClass>();
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<TestClass> lst = new List<TestClass>();
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<TestClass> dataSource2 = new List<TestClass>() {
new TestClass() { Name="a",Id = 2 },
new TestClass() { Name="b",Id = 1 }
};
}


参考:
CSharp 3.0 - CSharp - Jankh メモ Wiki
by jehoshaphat | 2011-06-06 22:32 | .Net開発


<< (.Net)WindowsAP... Firefoxでキャッシュ先を... >>