Почему структура не может сделать, чтобы конструктор без параметров [копировал]

Вы пробовали:

const token = req.token as Token;
13
задан Praveen Sharma 22 February 2009 в 21:59
поделиться

2 ответа

У меня не может быть явного конструктора без параметров, только неявный, который инициализирует всех участников к их значению по умолчанию.

Хотя CLR позволяет его, C# не позволяет структурам иметь конструктора без параметров по умолчанию. Причина состоит в том, что, для типа значения, компиляторы по умолчанию ни генерировать конструктора по умолчанию, и при этом они не генерируют вызов к конструктору по умолчанию. Так, даже если Вы, оказалось, определили конструктора по умолчанию, это не назовут, и это только смутит Вас. Для предотвращения таких проблем компилятор C# запрещает определение конструктора по умолчанию пользователя. И потому что это не генерирует конструктора по умолчанию, Вы не можете инициализировать поля при определении их...

15
ответ дан 2 December 2019 в 00:19
поделиться

Вполне разумное объяснение может быть найдено в: http://en.csharp-online.net/CSharp_FAQ:_Why_must_struct_constructors_have_at_least_one_argument

Заключение в кавычки: "Общеязыковая среда выполнения (CLR).NET не гарантирует, что конструкторов без параметров вызовут. Если бы структурам разрешили иметь значение по умолчанию, конструкторов без параметров, то импликация была бы то, что конструкторов по умолчанию всегда называли бы. Все же CLR не делает такой гарантии".

0
ответ дан 2 December 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: