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;
    }
}

questionAnswers(7)

yourAnswerToTheQuestion