7 Stimmen

this()- und base()-Konstruktoren in C#

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X