Wann und warum sollte ich ClassName verwenden: this (null)?

8

Ich kann den Unterschied zwischen einem einfachen bare

nicht verstehen %Vor%

und

%Vor%

Ich weiß, dass ich es nur benutzen kann, wenn ich ein +1 überladenes ctor habe, aber ich kann die Vorteile von defining the parameterless constructor auf diese Weise nicht verstehen.

    
Sergio 13.02.2013, 18:50
quelle

3 Antworten

10

Dies erlaubt dem Einzelparam-Konstruktor, die gesamte Logik zu haben, so dass er nicht wiederholt wird.

%Vor%

Ich hoffe, es ist klar, dass die "Logik" und "noch mehr Logik" im parameterlosen Konstruktor wiederholt werden müssten, wenn nicht für this(null) .

    
John Saunders 13.02.2013, 18:52
quelle
3

Ein sehr nützlicher Fall sind Situationen wie WinForms, wo der Designer einen prameterless Konstruktor benötigt, aber Sie wollen, dass Ihr Formular einen Konstruktor benötigt.

%Vor%     
Scott Chamberlain 13.02.2013 18:55
quelle
1

Es gibt ein Muster namens Constructor injection. Dieses Muster ist hauptsächlich nützlich für das Komponententesten und das Teilen der Logik. Hier ist ein Beispiel

%Vor%

Wie Sie hier sehen, werden Komponententests durch das Übergeben einer falschen Implementierung einfach sein. Zusätzlich wird die Logik geteilt (DRY). Und tun Sie die gesamte Logik innerhalb des Konstruktors, der die höchste Anzahl von Parametern enthält

Aber in Ihrem Fall wird null übergeben, also ist das ein Zusammenhang. Ich muss wissen, was dein Kontext ist.

    
Dan Hunex 13.02.2013 18:58
quelle

Tags und Links