読み取り専用フィールドは、後で変更してはならないオブジェクトの設定時に認識される変数がある場合に使用する必要があります。
ただし、サブクラスのコンストラクターから読み取り専用フィールドを割り当てることはできません。スーパークラスが抽象クラスの場合でも、これは機能しません。
これが良い考えではない、または C# 言語に欠けている理由を説明できる人はいますか?
abstract class Super
{
protected readonly int Field;
}
class Sub : Super
{
public Sub()
{
this.Field = 5; //Not compileable
}
}
PS:もちろん、スーパークラスの保護されたコンストラクターで読み取り専用フィールドを割り当てることで、同じ結果に到達できます。