Geschütztes schreibgeschütztes Feld gegen geschütztes Eigentum

Ich habe eine abstrakte Klasse und möchte ein schreibgeschütztes Feld in seinem geschützten Konstruktor initialisieren. Ich möchte, dass dieses schreibgeschützte Feld in abgeleiteten Klassen verfügbar ist.

Nachdem ich es mir zur Gewohnheit gemacht habe, alle Felder privat zu machen und Eigenschaften verfügbar zu machen, habe ich dies folgendermaßen implementiert:

abstract class Foo
{
    private readonly int _field;

    protected Foo(int field)
    {
        _field = field;
    }

    protected int Field
    {
        get { return _field; }
    }
}

Aber dann habe ich mich gefragt, ob es wirklich von Vorteil ist, das Feld hier privat zu halten. Ich bin mir der Vorteile von Immobilien bewusst und es gibt einige SO-Fragen zu diesem Thema im Allgemeinen, aber sie konzentrieren sich auf öffentliche Bereiche im Gegensatz zu geschützten.

Soll ich also zur folgenden Implementierung wechseln oder nicht? Welche Überlegungen und Vor- und Nachteile sind in beiden Fällen zu beachten?

abstract class Foo
{
    protected readonly int _field;

    protected Foo(int field)
    {
        _field = field;
    }
}

Antworten auf die Frage(7)

Ihre Antwort auf die Frage