¿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
Respuesta
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, ...
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 ".
- 1. ¿No puede C++ tipo POD tener cualquier constructor?
- 2. C# ¿por qué necesita struct si la clase puede cubrirlo?
- 3. ¿Por qué no puedo aplicar clases derivadas para tener constructores sin parámetros?
- 4. La clase base no contiene el constructor sin parámetros?
- 5. Constructor de Scala sin parámetros
- 6. El servicio web no se puede serializar porque no tiene un constructor sin parámetros
- 7. ¿Por qué dos parámetros para el constructor de ComponentName?
- 8. KeyValuePair: ¿ningún constructor sin parámetros?
- 9. Constructor C# Struct Genérico
- 10. Activator.CreateInstance (...) no encuentra el constructor con parámetros
- 11. Struct Constructor Sintaxis
- 12. Struct - Layout.Explicit - Constructor - completamente asignar campos
- 13. Activator.CreateInstance no puede encontrar el constructor (MissingMethodException)
- 14. ¿Por qué Java no puede encontrar mi constructor?
- 15. ¿Por qué la restricción genérica new() no satisface una clase con parámetros opcionales en el constructor?
- 16. ¿Por qué PriorityQueue en Java no puede tener initialCapacity 0?
- 17. ¿Por qué no se elimina el constructor de copia aquí?
- 18. Por qué la clase XML-Serializable necesita un constructor sin parámetros
- 19. ¿Por qué un delegado sin parámetros compila?
- 20. ¿Por qué necesitamos struct? (C#)
- 21. ¿Puedo forzar a los descendientes a tener un constructor sin parámetros?
- 22. Cómo deshabilitar el constructor sin parámetros en C#
- 23. No se definió ningún constructor sin parámetros para el tipo de 'System.String' durante la deserialización JSON
- 24. ¿Por qué el Manifiesto no está disponible en el constructor?
- 25. Diseño sin el constructor predeterminado
- 26. ¿ActionScript-3 no puede tener múltiples constructores?
- 27. Parámetros booleanos en métodos. Por qué no?
- 28. En .NET ¿una clase puede tener constructor virtual?
- 29. copiar los parámetros del constructor
- 30. ¿Por qué no hay llamadas al constructor?
Un duplicado es http://stackoverflow.com/questions/333829, "¿Por qué no puedo definir un constructor predeterminado para una estructura en .NET" –
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) –