2009-04-20 2 views
1

Vor kurzem sah ich einen C# Konstruktor, die in etwa so aussehen ...C# Constructor

public Class foo 
{ 
    public foo() : this(new bar()) 
    {} 
} 

Kann jemand mir helfen, diese zu interpretieren? Wo passt die Bar()?
Wenn Sie mir helfen könnten, die Klasse zu vervollständigen, indem Sie die bar() an der richtigen Stelle einfügen, so dass ich kompilieren/debuggen und das ganze Bild sehen kann.

Vielen Dank im Voraus.

Nikos

Antwort

7

Die foo Klasse einen zweiten Konstruktor auf class foo sollte anderen Konstruktor enthalten, die eine Bar Objekt als Parameter übernimmt.

public class foo 
{ 
    public foo() 
     : this(new bar()) 
    { } 
    public foo(bar b) 
    { 
    } 
} 
public class bar 
{ 
} 
1

Es wird mit einer Signatur wie diese

public foo(bar Bar) 
{ 
    ... do something with bar here; 
} 
1

Dies ist eine gängige Technik ist alle Konstrukteure durch einen einzigen Punkt gehen, um sicherzustellen, so dass Sie nur diesen Punkt ändern müssen (es kann andere Verwendungen haben, aber ich bin mir nicht bewusst von ihnen).

Ich habe es in Dinge gesehen, die Standardargumente verwenden wie:

class Rational { 
    private: 
     long numerator; 
     long denominator; 
    public: 
     void Rational (long n, long d) { 
      numerator = n; 
      denominator = d; 
     } 
     void Rational (long n): Rational (n,1) {} 
     void Rational (void): Rational (0,1) {} 
     void Rational (String s): Rational (atoi(s),1) {} 
} 

Bär mit der Syntax, ich habe nicht bereit Zugang zu einem Compiler hier aber die grundlegende Absicht ist es, so viel zu zentralisieren Code wie möglich in diesem ersten Konstruktor. der Nenner größer als Null ist oder der Zähler und Nenner, um sicherzustellen, reduziert wird unter Verwendung einer größte gemeinsame Teiler Methode

Wenn also zum Beispiel eines Scheck hinzufügen, es nur hat an einem Punkt in Ihrem Code geschehen.

+0

Interessant. Was passiert mit Code, den Sie in die leeren Klammern setzen? – Svante

+0

Es läuft immer noch, aber nach der Abhängigkeit (Hauptkonstruktor). – paxdiablo