Tengo entendido que ahora se permiten constructores sin parámetros en estructuras.
Pero lo siguiente me da un error de compilación en VS 2015 Community
public struct Person { public string Name { get; } public int Age { get; } public Person(string name, int age) { Name = name; Age = age; } public Person() : this("Jane Doe", 37) { } }Error: "Las estructuras no pueden contener constructores explícitos sin parámetros"
¿Alguien sabe por qué?
La función estaba presente en las versiones preliminares anteriores de C# 6.0, por lo que algunos artículos hablan de ella. Pero luego se eliminó y, por lo tanto, no está presente en la versión distribuida con VS 2015 RC.
Específicamente, el cambio se revirtió en la solicitud de extracción n.º 1106 , con más información sobre la justificación en el problema n.º 1029 . Citando a Vladimir Sadov:
A medida que realizamos más y más pruebas, seguimos descubriendo casos en los que los constructores de estructuras sin parámetros provocaban un comportamiento incoherente en las bibliotecas o incluso en algunas versiones de CLR.
[…]
Después de reconsiderar los problemas potenciales que surgen de romper suposiciones de larga data, decidimos que era mejor para nuestros usuarios restaurar el requisito de que los constructores de estructuras siempre tengan parámetros formales.