Zur Klarstellung: Ja, Sie müssen im Konstruktor für von der Klasse abgeleitete Objekte Standardwerte festlegen. Sie müssen sicherstellen, dass der Konstruktor mit dem richtigen Zugriffsmodifikator für die Konstruktion vorhanden ist, wenn er verwendet wird. Wenn das Objekt nicht instanziiert wird, d.h. es hat keinen Konstruktor (z.B. statische Methoden), dann kann der Standardwert durch das Feld festgelegt werden. Der Grund hierfür ist, dass das Objekt selbst nur einmal erstellt wird und Sie es nicht instanziieren.
@Darren Kopp - gute Antwort, sauber und korrekt. Und um es noch einmal zu wiederholen: Sie KÖNNEN Konstruktoren für abstrakte Methoden schreiben. Sie müssen nur beim Schreiben des Konstruktors von der Basisklasse aus auf sie zugreifen:
Konstruktor der Basisklasse:
public BaseClassAbstract()
{
this.PropertyName = "Default Name";
}
Konstrukteur bei Abgeleitet / Konkret / Unterklasse:
public SubClass() : base() { }
Der Punkt hier ist, dass die Instanzvariable, die von der Basisklasse gezogen wird, den Namen Ihres Basisfeldes begraben kann. Wenn Sie den Wert des aktuell instanziierten Objekts mit "this." festlegen, können Sie Ihr Objekt in Bezug auf die aktuelle Instanz und die erforderlichen Berechtigungsstufen (Zugriffsmodifikatoren) dort, wo Sie es instanziieren, korrekt gestalten.