これまでプロパティの初期化といったら、コンストラクタでやるものだと思ってた。
class Sale { public int number { get; set; } // コンストラクタ public Sale() { number = 10; } }
けど、C#ではコンストラクタを使わずにプロパティの初期化ができる。これは便利。
public int number { get; set; } = 6;
上の書き方だと外部のクラスからプロパティが変更されてしまうので、読み取り専用プロパティの書き方も別途ある。
public int number { get; private set; } = 6;
読み取り専用は、こんな書き方もある。
public string Name => "山田太郎";
だが、参照型のプロパティを読み取り専用にするには、特別な書き方を必要とする。
// これで要素の変更などはできない public IReadOnlyList<int> MyList { get; private set; }