オブジェクト初期化子はやっぱ便利

以前、オブジェクト初期化子について勉強しましたが、その時は何が便利なのかいまいちわかりませんでした。

しかしいくつかのプログラムを書いてる内に、なるほどこれは便利だと思うようになりました。

using System;

class Class {
    public string Name;
}

class Program {
    static void Output(Class cobj) {
        Console.WriteLine(cobj.Name);
    }
    static void Main() {
        var cobj = new Class();
        cobj.Name = "foo";
        
        Output(cobj);
    }
}
$ main
foo

上記処理は一時変数cobjを定義し、Nameに値を設定しているわけですが、オブジェクト初期化子を使えば式として扱えるため、一時変数を省略することができるので処理が簡素になります。

using System;

class Class {
    public string Name;
}

class Program {
    static void Output(Class cobj) {
        Console.WriteLine(cobj.Name);
    }
    static void Main() {
        // オブジェクト初期化子を使ってそのまま渡す
        Output(new Class() { Name = "foo" });
    }
}

便利ですね