Это легко обойти, но мне просто интересно, могу ли я использовать функцию языка или, возможно, тот факт, что язык запрещает это означает, что я делаю логическую ошибку в дизайне классов.
Я делаю самообследование моего кода, чтобы помочь "ожесточить" его для повторного использования, и я просто подошел:
public partial class TrackTyped : Component
{
IContainer components = null;
public TrackTyped()
: base()
{
InitializeComponent();
}
public TrackTyped(IContainer container)
: base()
{
container.Add(this);
InitializeComponent();
}
}
То, что я обычно делаю, когда вижу одну и ту же строку кода в двух конструкторах, это сделать один вызов другим с помощью "this()", но я не могу это сделать.
Если я правильно прочитал spec (я только начал читать спецификацию, чтобы я мог быть не прав):
10.11 Instance Constructors
constructor-declarator:
identifier ( formal-parameter-listopt ) constructor-initializeropt
constructor-initializer:
: base ( argument-listopt )
: this ( argument-listopt )
Это говорит, что у меня может быть только один из них.
ВОПРОС: 10.11 подразумевает, что нет причин для вызова обоих или это просто означает, что язык поддерживает только вызов?