Может ли кто-нибудь дать мне 1 вескую причину, почему в C# цепной конструктор всегда вызывается перед любым из тела конструктора?1 хорошая причина, почему вначале вызываются цепные конструкторы?
.NET позволяет вам вызвать цепной конструктор в любой точке внутри конструктора, поэтому почему C# заставляет вас делать это до выполнения вашего тела конструктора?
Однажды я написал Андерсу Х и спросил его об этом, и он был достаточно любезен, чтобы тратить время на ответ, несмотря на то, насколько он занят. К сожалению, ему удалось ответить на вопрос, о котором я действительно не спрашивал (о названных конструкторах.)
Так что, просто из любопытства, я думал, что попрошу здесь, потому что лично я не думаю, что для этого есть веская причина ограничение, поэтому, надеюсь, я буду перевоспитан :-)
Просто уточнить. Правило CLR .NET состоит в том, что должен быть вызван 1 конструктор, только 1 конструктор и только один раз. Таким образом, в CLR они действительны
public class Meh
{
public Meh()
{
Console.WriteLine("Meh()");
this("Hello");
}
public Meh(string message)
{
Console.WriteLine("Meh {0}", message);
base();
}
}
Но не в C#
В большинстве ответов до сих пор предполагается, что вы говорите о вызове конструкторов базового класса. Однако, я думаю, вы говорите о вызове других конструкторов для текущего класса, подобных этому (некоторые, другие, args); Что он? –