Los constructores primarios ya no compilan en VS2015

98

Hasta el día de hoy, podía hacer uso de constructores primarios, como:

public class Test(string text)
{
    private string mText = text;
}

Para poder hacer esto, en el CTP de Visual Studio anterior, tuve que agregar esto al archivo csproj:

<LangVersion>Experimental</LangVersion>

De todos modos, esto ya no funciona en Visual Studio 2015 Preview (con o sin LangVersion). ¿Alguien tiene alguna idea sobre lo que podría estar pasando?

Matko
fuente
6
Hablan de eliminarlo aquí
Jonesopolis
15
¿Soy el único que pensó que esta característica no tenía sentido? Nunca encontré el beneficio real de eso.
TyCobb
2
Se sintió un poco incómodo, ¡pero me gusta la filosofía detrás de eso!
Matko
14
Es una pena. Pero puede usar constructores primarios libremente una vez que se mueva a F #. Vaya a F #, csharpers, sus nuevas funciones de idioma ya están allí;)
scrwtp
3
@TyCobb, los constructores primarios son absolutamente esenciales con la inyección de dependencia: puede usar la inyección de constructor (a diferencia de la inyección de propiedad) sin repetir el nombre (y el tipo) de cada dependencia cuatro veces.
Fyodor Soikin

Respuestas:

143

¿Alguien tiene alguna idea sobre lo que podría estar pasando?

Sí, los constructores primarios se han eliminado de los planes para C # 6. Es posible que aparezcan de alguna forma en una versión posterior, pero ya no están en C # 6.

Consulte la publicación "Cambios en el conjunto de funciones de idioma" del equipo para obtener más detalles.

Jon Skeet
fuente
¡Eso es realmente triste! Parecían bastante útiles.
Per Lundberg
@PerLundberg: Tampoco están en C # 7. Sospecho que el equipo de diseño de C # revisará los tipos de registro en C # 8, pero eso no significa que definitivamente lo harán allí.
Jon Skeet
Esperemos lo mejor. :) Los vi mencionados en algunas publicaciones de C #, sí, y parecía otra forma interesante de intentar resolver el problema de la "clase simple".
Per Lundberg