поля только для чтения в качестве целей из конструкторов подклассов

Поле только для чтения следует использовать, когда у вас есть переменная, которая будет известна при установке объекта, которую не следует изменять впоследствии.

Однако нельзя назначать поля только для чтения из конструкторов подклассов. Это даже не работает, если суперкласс является абстрактным.

Есть ли у кого-нибудь хорошее объяснение, почему это либо плохая идея, либо отсутствует в языке C #?

abstract class Super
{
    protected readonly int Field;
}

class Sub : Super 
{
    public Sub()
    {
        this.Field = 5; //Not compileable
    }
}

PS: Вы, конечно, можете достичь того же результата, назначив поля только для чтения в защищенном конструкторе в суперклассе.

19
задан philipshield 9 October 2011 в 20:41
поделиться