diese Anweisung nach den Argumenten des Konstruktors [duplizieren]

8

Ich habe diesen Codeblock gesehen, als ich versucht habe, etwas mit APN zu erstellen. Könnte mir jemand erklären, was "diese" Aussagen dort machen?

%Vor%

Ist es wie Standardwerte dieser Argumente?

    
paroxit 31.05.2013, 15:51
quelle

3 Antworten

9

this ruft den überladenen Konstruktor für die ApplePushService-Klasse mit den angegebenen Parametern auf.

Zum Beispiel

%Vor%

Damit können Sie einen Konstruktor aufrufen, der einen anderen aufrufen kann.

    
Brandon 31.05.2013 15:52
quelle
9

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 .

    
Jon Skeet 31.05.2013 15:52
quelle
3

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:

  • Rufen Sie andere Konstruktoren auf.
  • Übergeben Sie das aktuelle Objekt als Parameter.
  • Siehe Instanzmethoden oder Felder.
Esteban 31.05.2013 15:53
quelle

Tags und Links