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