[ VB.NET / C# ] クラスの初期化時に複数のプロパティ設定をする ( With )

Pocket

VB.NET および C# では、VS2008 より、オブジェクト初期化子によってインスタンス生成時に複数のプロパティ設定を記述することができるようになりました。

スポンサーリンク

オブジェクト初期化子による初期化

オブジェクト初期化子による初期化では、VB.NET では With キーワードを使用します。C# では特に必要はありません。複数のプロパティをカンマで区切って設定します。

VB.NET

    ’オブジェクト初期化子で初期化
    Dim emp3 As New Employee With {.ID = 2, .Name = "鈴木一郎"}

C#

    // オブジェクト初期化子による初期化
    Employee emp3 = new Employee() { ID = 2, Name = "鈴木一郎" };
コレクション初期化子とオブジェクト初期化子を併用する

List や Dictionary クラスの初期化にコレクション初期化子を使用することができます。次のサンプルではコレクション初期化子とオブジェクト初期化子を併用しています。なお、VB.NET でコレクション初期化子がサポートされたのは VB2010 からです。

VB.NET

    ’コレクション初期化子とオブジェクト初期化子を同時に利用
    Dim emps As New List(Of Employee) From {
                                        New Employee() With {.ID = 1, .Name = "山田太郎"},
                                        New Employee() With {.ID = 2, .Name = "山田花子"},
                                        Nothing,
                                        New Employee() With {.ID = 3, .Name = "イチロー"}
                                    }

C#

    ’コレクション初期化子とオブジェクト初期化子を同時に利用
    List<Employee> emps = new List<Employee>()
    {
        new Employee() { ID = 1, Name = "山田太郎" },
        new Employee() { ID = 2, Name = "山田花子" },
        new Employee() { ID = 3, Name = "鈴木一郎" },
        null
    };

古い情報ですが、意外と知らない人は知らないものです。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *