2009-02-22 23 views
11

¿Por qué struct no puede tener un 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.Por qué struct no puede tener el constructor sin parámetros

+0

Un duplicado es http://stackoverflow.com/questions/333829, "¿Por qué no puedo definir un constructor predeterminado para una estructura en .NET" –

+0

Duplicado: [¿Por qué no puedo definir un constructor predeterminado para una estructura en .NET] (http://stackoverflow.com/questions/333829/why-cant-i-define-a-default-constructor-for-a-struct-in-net) –

Respuesta

14

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

Aunque el CLR permite, C# no permite estructuras para tener un constructor sin parámetros por defecto . El motivo 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, aunque haya definido un constructor predeterminado , no se llamará a y eso solo lo confundirá. Para evitar estos problemas, el compilador C# no permite la definición de un constructor predeterminado por parte del usuario. Y porque no genera un constructor por defecto , no se puede inicializar campos considerando en su definición, ...

0

Toda una explicación razonable se puede encontrar 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 los constructores por defecto. Sin embargo, el CLR hace no hay tal garantía ".

Cuestiones relacionadas