【C#】読み取り専用インデクサとプロパティをラムダ式で書くと、可読性が上がる

読み取り専用のコードを定義したいということは多々あるかと思います。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;