読み取り専用のコードを定義したいということは多々あるかと思います。C#6.0以前は二重括弧のgetterを書かなければ行けなかったのですが、C#6.0以降はラムダ式で定義できるようになり、面倒くささが減っただけでなく可読性が向上しています。
環境
- C#6.0以降
インデクサの書き換え
private T[] arr = new T[100];
// インデクサ
public T this[int i]
{
get { return arr[i]; }
set { arr[i] = value; }
}
// 読み取り専用インデクサにラムダ式で書き直す(C#6.0以降)
public T this[int i] => arr[i];
// インデクサをラムダ式で書き直す(C#7.0以降)
public T this[int i]
{
get => arr[i];
set => arr[i] = value;
}
プロパティの書き換え
// プロパティ
public T X { get; set; }
// ラムダ式で書き直す(C#6.0以降)
public T X => this.x;
private T x;