verwenden würden, Bei der Verkettung von Konstruktoren muss auch die Reihenfolge der Konstruktorauswertung berücksichtigt werden:
Um von Gishu Antwort zu leihen, ein bisschen (halten Code etwas ähnlich):
public Test(bool a, int b, string c)
: this(a, b)
{
this.C = c;
}
private Test(bool a, int b)
{
this.A = a;
this.B = b;
}
Wenn wir die im private
Konstruktor ausgeführt evalution ändern, leicht, werden wir sehen, warum Konstruktor Bestellung wichtig ist:
Oben habe ich einen falschen Funktionsaufruf hinzugefügt, der bestimmt, ob die Eigenschaft C
einen Wert hat. Auf den ersten Blick scheint es, dass C
einen Wert haben würde - es wird im aufrufenden Konstruktor gesetzt; Es ist jedoch wichtig, daran zu denken, dass Konstruktoren Funktionen sind.
this(a, b)
heißt - und muss "zurückgeben" - bevor der public
Konstruktor Körper ausgeführt wird. Anders ausgedrückt ist der zuletzt aufgerufene Konstruktor der erste ermittelte Konstruktor. In diesem Fall wird private
vor public
ausgewertet (nur um die Sichtbarkeit als Bezeichner zu verwenden).
Das war ziemlich einfach .. danke! –