Chronione pole tylko do odczytu vs chroniona właściwość
Mam klasę abstrakcyjną i chciałbym zainicjować pole tylko do odczytu w chronionym konstruktorze. Chciałbym, aby to pole tylko do odczytu było dostępne w klasach pochodnych.
Podążając za moim nawykiem uczynienia wszystkich pól prywatnymi i ujawnienia właściwości, zaimplementowałem to w następujący sposób:
abstract class Foo
{
private readonly int _field;
protected Foo(int field)
{
_field = field;
}
protected int Field
{
get { return _field; }
}
}
Ale potem zastanawiałem się, czy jest naprawdę duża korzyść z utrzymywania tego pola tutaj. Jestem świadomy zalet właściwości i generalnie jest kilka pytań na ten temat, ale skupiają się one na dziedzinach publicznych, a nie na obszarach chronionych.
Czy powinienem przełączyć się na poniższą implementację, czy nie? Jakie są rozważania i zalety / wady, o których należy pamiętać w obu przypadkach?
abstract class Foo
{
protected readonly int _field;
protected Foo(int field)
{
_field = field;
}
}