Sicher - das kettet einen Konstruktor auf einen anderen. Es gibt zwei Formen - this
, um auf einen anderen Konstruktor in derselben Klasse zu ketten, und base
, um mit einem anderen Konstruktor in der Basisklasse zu ketten. Der Rumpf des Konstruktors, an den Sie ketten, wird ausgeführt, und dann wird der Konstruktor des Konstruktors ausgeführt. (Der andere Konstruktor kann sich natürlich zuerst auf einen anderen Konstruktor verketten.)
Wenn Sie nichts angeben, wird automatisch eine Verkettung mit einem parameterlosen Konstruktor in der Basisklasse durchgeführt. Also:
%Vor%entspricht
%Vor%Beachten Sie, dass Instanzvariablen-Initialisierer ausgeführt werden, bevor der andere Konstruktor aufgerufen wird.
Überraschenderweise erkennt der C # -Compiler nicht, ob Sie eine gegenseitige Rekursion haben - daher ist dieser Code gültig, wird aber mit einem Stack-Überlauf enden:
%Vor%(Es verhindert jedoch, dass Sie die exakt gleiche Konstruktorsignatur verketten.)
Weitere Informationen finden Sie in meinem Artikel zur Verkettung von Konstruktoren .
Das ruft einen anderen Konstruktor auf. In diesem Fall wird : this(...)
verwendet, um einen anderen Konstruktor in dieser Klasse aufzurufen.
Zum Beispiel:
%Vor%BEARBEITEN:
Is it like default values of those arguments ?
Bei einer Überladung können Sie die vollständige Logik an einer Stelle delegieren und die übrigen Konstruktoren mit Standardwerten aufrufen.
this
keyword kann in diesen Kontexten verwendet werden:
Tags und Links c# constructor