У меня есть абстрактный класс, и я бы хотел инициализировать поле readonly в его защищенном конструкторе. Я бы хотел, чтобы это поле readonly доступно в производных классах.
Следуя моей привычке делать все поля частными и подвергая свойствам, я реализовал это следующим образом:
abstract class Foo
{
private readonly int _field;
protected Foo(int field)
{
_field = field;
}
protected int Field
{
get { return _field; }
}
}
Но потом я подумал, есть ли на самом деле много преимуществ в том, чтобы держать поле частным здесь. Я знаю о преимуществах свойств, и в этом вопросе есть несколько вопросов SO, но они сосредоточены на публичных полях, а не на защищенных.
Итак, следует ли перейти к реализации ниже или нет?. Каковы соображения и преимущества/недостатки, которые нужно знать в любом случае?
abstract class Foo
{
protected readonly int _field;
protected Foo(int field)
{
_field = field;
}
}