Подтвердить что ты не робот

Почему у структуры нет конструктора без параметров

Почему у структуры нет конструктора без параметров? Какая проблема при этом для CLR или почему это не разрешено? Пожалуйста, объясните это, поскольку я этого не понимаю.

4b9b3361

Ответ 1

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

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

Ответ 2

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

Цитирование: ".NET Common Language Runtime (CLR) не гарантирует, что вызовутся конструкторы без параметров. Если бы структурам разрешалось иметь конструкторы без параметров без параметров, импликация будет заключаться в том, что конструкторы по умолчанию всегда будут вызываться. Однако CLR не делает таких гарантия".