ひでぼ~blog

C#ときどきゲーム

C#9.0のInit Only Setterを試す

.NET 5がリリースされてC# 9.0モチベが高まったのでやってみました。 Init Only Setterを使うとImmutableな型を定義するのがラクになります。

C# 9.0以前の書き方

プロパティをget onlyにしてコンストラクタで各プロパティを初期化しないとダメでした。

class Order {

    public string Name { get; }

    public int Price { get; }

    public Order(string name, int price) {
        Name = name;
        Price = price;
    }
}

C# 9.0からの書き方

自動プロパティを定義するときにsetと書いていたところをinitにします。

class Order {

    public string Name { get; init; }

    public int Price { get; init; }
}

オブジェクトをnewした後にプロパティをセットしようとするとコンパイルエラーになりました。 f:id:hideb3:20201117181229p:plain

参考

docs.microsoft.com