Es scheint keine Sprachsyntax für die Angabe sowohl eines this()- als auch eines base()-Konstruktors zu geben. Gegeben der folgende Code:
public class Bar : Foo
{
public Bar()
:base(1)
//:this(0)
{ }
public Bar(int schmalue)
:Foo(1)
{
//Gobs of initialization code
...
Schmalue = schmalue;
}
public int Schmalue { get; private set; }
}
public class Foo
{
public Foo()
{
Value = 0;
}
public class Foo(int value)
{
Value = value;
}
public int Value { get; private set; }
}
Der Compiler gibt einen Fehler aus, der besagt, dass beim Auskommentieren des Aufrufs :this(0) ein '{' erwartet wurde. Das ist ärgerlich, weil ich dadurch meinen Code in eine private Methode auslagern muss, obwohl diese Funktion eindeutig dafür vorgesehen war, so etwas zu verhindern.
Mache ich das einfach falsch? Ich habe versucht, kein Trennzeichen, Semikolon, Komma... Es scheint, dass dies nur ein Versehen des Entwicklungsteams war. Mich würde interessieren, warum das weggelassen wurde, ob ich das falsch mache oder ob jemand gute Vorschläge für Alternativen hat.