.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した後にプロパティをセットしようとするとコンパイルエラーになりました。