Certo - che le catene un costruttore su un altro. Esistono due forme: this
da associare a un altro costruttore della stessa classe e base
da associare a un altro costruttore nella classe base. Il corpo del costruttore che si sta concatenando per eseguire, e quindi viene eseguito il corpo del costruttore. (Naturalmente, l'altro costruttore può catena su un altro uno prima.)
Se non si specifica nulla, catene automaticamente a un costruttore senza parametri nella classe base. Quindi:
public Foo(int x)
{
// Presumably use x here
}
è equivalente a
public Foo(int x) : base()
{
// Presumably use x here
}
Nota quell'istanza initializers variabili vengono eseguite prima di l'altro costruttore viene chiamato.
Sorprendentemente, il compilatore C# non rileva se si finisce con mutua ricorsione - quindi questo codice è valido, ma finirà con un overflow dello stack:
public class Broken
{
public Broken() : this("Whoops")
{
}
public Broken(string error) : this()
{
}
}
(lo fa evitare che si concatenamento su la stessa firma del costruttore, tuttavia.)
Per maggiori dettagli, vedi my article on constructor chaining.
fonte
2013-05-31 15:52:55
@dasblinkenlight sebbene relativo, non è un duplicato di questa domanda per quanto riguarda l'intento. – nawfal
Vedere anche http://stackoverflow.com/questions/3797528/base-and-this-constructors- best practice – nawfal