Kann ich einen überladenen Konstruktor von einem anderen Konstruktor derselben Klasse in C # aufrufen?
c#
constructor
Tomáš Zato - Monica wieder einsetzen
quelle
quelle
Antworten:
No, You can't do that, the only place you can call the constructor from another constructor in C# is immediately after ":" after the constructor. for example
quelle
Wenn Sie meinen, wenn Sie eine Verkettung in C # durchführen können, lautet die Antwort Ja. Die Frage wurde bereits gestellt.
Allerdings scheint es , aus den Kommentaren, so scheint es , was Sie wirklich zu fragen beabsichtigen , ist ‚Kann ich von einem überladenen Konstruktor rufen in einem anderen Konstruktor mit Pre / Post - Processing?‘
Obwohl C # nicht über die entsprechende Syntax verfügt, können Sie dies mit einer allgemeinen Initialisierungsfunktion tun (wie in C ++, das die Verkettung von Ctors nicht unterstützt).
quelle
EDIT: Laut den Kommentaren zum ursprünglichen Beitrag ist dies eine C # -Frage.
Kurze Antwort: Ja, mit dem
this
Schlüsselwort.Lange Antwort: Ja, mit dem
this
Schlüsselwort, und hier ist ein Beispiel.quelle
In C # ist es nicht möglich, einen anderen Konstruktor innerhalb des Methodenkörpers aufzurufen. Sie können einen Basiskonstruktor folgendermaßen aufrufen: foo (args): base (), wie Sie selbst betont haben. Sie können auch einen anderen Konstruktor in derselben Klasse aufrufen: foo (args): this ().
Wenn Sie etwas tun möchten, bevor Sie einen Basiskonstruktor aufrufen, scheint die Konstruktion der Basisklasse von einigen externen Dingen abhängig zu sein. In diesem Fall sollten Sie Argumente des Basiskonstruktors verwenden, nicht Eigenschaften der Basisklasse oder ähnliches
quelle