Detaillierte Erläuterung der Ausführungsreihenfolge des C#-Konstruktors
Bei der Definition eines Konstruktors in C# lautet eine Schlüsselfrage: Wird der Konstruktor der aktuellen Klasse vor oder nach dem Aufruf des Basisklassenkonstruktors ausgeführt?
Ausführungsauftrag
Die Ausführungssequenz folgt den folgenden Schritten:
- Mitgliedsvariablen aller Klassen in der Vererbungshierarchie werden auf Standardwerte initialisiert.
- Beginnen Sie mit der am meisten abgeleiteten Klasse:
- Führen Sie einen Variableninitialisierer für den am meisten abgeleiteten Typ aus.
- Die Konstruktorkette bestimmt den aufzurufenden Basisklassenkonstruktor.
- Initialisieren Sie die Basisklasse (wenden Sie diese Schritte rekursiv an).
- Konstruktorkörper in der Vererbungskette dieser Klasse werden nacheinander ausgeführt.
- Bitte beachten Sie, dass im Gegensatz zu Java die Basisklasse initialisiert wird, nachdem der Variableninitialisierer ausgeführt wurde.
Beispiel
Bedenken Sie die folgende Klassenhierarchie:
<code class="language-csharp">class Base
{
public Base(int param1)
{
// 构造函数主体
}
}
class Derived : Base
{
public Derived(int param1, int param2) : base(param1)
{
// 构造函数主体
}
}</code>
Nach dem Login kopieren
Beim Erstellen einer abgeleiteten Instanz ist die Ausführungssequenz wie folgt:
- Weisen Sie den Mitgliedsvariablen von Base und Derived Standardwerte zu.
- Führen Sie den Variableninitialisierer von Derived aus und legen Sie seine eigenen Mitgliedsvariablen fest.
- Rufen Sie den Basisklassenkonstruktor (Base(int param1)) mit den angegebenen Parametern auf.
- Führen Sie den Konstruktorkörper von Derived aus.
Das obige ist der detaillierte Inhalt vonWie lautet die Ausführungsreihenfolge des Konstruktors bei der C#-Vererbung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!