Информация об изменениях

Сообщение Re: protected readonly в наследнике от 19.02.2021 17:28

Изменено 19.02.2021 17:29 HFTMan

Re: protected readonly в наследнике
Здравствуйте, Sharov, Вы писали:

S>Код выше не компилируется по причине того, что Field readonly. Я понимаю, что конструктор это такой спец.

S>метод для создания объектов, соотв. readonly поля возможно менять(по сути давать значения) только
S>в этих спец. методах. Но почему бы не разрешить это также делать и наследникам, т.е. ограниченному числу
S>других спец. методов? Чем это плохо, что я упускаю из виду?
 public abstract class Foo
    {
        protected int Field
        {
            get;
            init;
        }

        protected Foo()
        {
            Field = 5;
        }
    }

    public abstract class Bar : Foo
    {
        protected Bar() : base()
        {
            Field = 5; //ошибка!!!
        }
    }
Re: protected readonly в наследнике
Здравствуйте, Sharov, Вы писали:

S>Код выше не компилируется по причине того, что Field readonly. Я понимаю, что конструктор это такой спец.

S>метод для создания объектов, соотв. readonly поля возможно менять(по сути давать значения) только
S>в этих спец. методах. Но почему бы не разрешить это также делать и наследникам, т.е. ограниченному числу
S>других спец. методов? Чем это плохо, что я упускаю из виду?
 public abstract class Foo
    {
        protected int Field
        {
            get;
            init;
        }

        protected Foo()
        {
            Field = 5;
        }
    }

    public abstract class Bar : Foo
    {
        protected Bar() : base()
        {
            Field = 5; //нет ошибки
        }
    }