Wydaje się, że nie ma składni języka dla określenia zarówno konstruktora this(), jak i base(). Biorąc pod uwagę następujący kod:Konstruktory this() i base() w języku C#
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; }
}
kompilator daje mi błąd informujący, że „{” oczekiwano kiedy odkomentowanie: ta (0) połączenia. Jest to uciążliwe, ponieważ powoduje, że koduję swój kod w prywatnej metodzie, kiedy ta funkcja została wyraźnie przewidziana, aby temu zapobiec.
Czy robię to po prostu źle? Nie próbowałem żadnego separatora, średnika, przecinka ... Wygląda na to, że był to tylko niedopatrzenie ze strony zespołu programistów. Interesuje mnie, dlaczego zostało to pominięte, jeśli robię coś niewłaściwego lub jeśli ktoś ma dobre sugestie co do alternatyw.
prawdopodobny duplikat [Calling Overriden Constructor i Base Constructor w C#] (http://stackoverflow.com/questions/335286/calling-overriden-constructor-and-base-constructor-in-c) – Oded
Dziękuję wszystkim odpowiedzi. W gruncie rzeczy problem polega na tym, że ten() może również wywoływać inny podstawowy konstruktor. – Sprague