Почему в значимых типах C# необходимо инициализировать все поля, при наличии конструктора?
Например, следующий код не скомпилируется
struct AAA
{
public int A;
public string C;
public AAA(int a)
{
A = a;
}
}
Поле ААА.С должно быть полностью определено до возврата управления в вызывающий метод
Но если уберем конструктор, то все компилируется
struct AAA
{
public int A;
public string C;
}
Дело в том, что для структур, в отличие от классов, нету инициализации полей по умолчанию (ради эффективности). Если вы не определяете конструктор, то у вас есть конструктор по умолчанию, который инициализирует все поля нулевым значением (default
соответствующего типа). Если вы определяете свой конструктор, то достаточно вызвать конструктор по умолчанию:
public AAA(int a) : this()
{
A = a;
}
Без этого поле C
инициализировано не было бы, и значение было бы не определено. Такие ситуации C#, в отличие от C++, не допускает.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Никак не могу понять для чего используются # или ## в MVC проектеНажимаю кнопку и получаю url вида http://localhost:55555/example/exm/List##