Сообщение 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>других спец. методов? Чем это плохо, что я упускаю из виду?
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>других спец. методов? Чем это плохо, что я упускаю из виду?
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; //нет ошибки
}
}