sharp initialize example español ejemplo c#

c# - initialize - Por qué struct no puede tener constructor sin parámetros



override constructor c# (2)

Se puede encontrar una explicación bastante razonable en: http://en.csharp-online.net/CSharp_FAQ:_Why_must_struct_constructors_have_at_least_one_argument

Citando: ".NET Common Language Runtime (CLR) no garantiza que se invoquen constructores sin parámetros. Si se permitiera a las estructuras tener constructores predeterminados sin parámetros, la implicación sería que siempre se llamarían a los constructores por defecto. Sin embargo, el CLR hace no hay tal garantía ".

¿Por qué struct no puede tener constructor sin parámetros? ¿Cuál es el problema al hacer esto para CLR o por qué no está permitido? Por favor explícalo ya que no lo entiendo.


No puedo tener un constructor explícito sin parámetros, solo el implícito, que inicializa todos los miembros a sus valores predeterminados.

Aunque CLR lo permite, C # no permite que structs tenga un constructor sin parámetros predeterminado. La razón es que, para un tipo de valor, los compiladores de forma predeterminada no generan un constructor predeterminado ni generan una llamada al constructor predeterminado. Por lo tanto, incluso si definió un constructor predeterminado, no se llamará y eso solo lo confundirá. Para evitar estos problemas, el compilador de C # no permite la definición de un constructor predeterminado por parte del usuario. Y como no genera un constructor predeterminado, no puede inicializar los campos al definirlos, ...