Construtores primários não compilam mais no VS2015

98

Até hoje, poderia fazer uso de construtores primários, como:

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

Para poder fazer isso, no CTP anterior do Visual Studio, eu tive que adicionar isso ao arquivo csproj:

<LangVersion>Experimental</LangVersion>

De qualquer forma, isso não funciona mais no Visual Studio 2015 Preview (com ou sem LangVersion). Alguém tem alguma ideia sobre o que pode estar acontecendo?

Matko
fonte
6
Eles falam sobre removê-lo aqui
Jonesopolis
15
Eu sou o único que achava que esse recurso era inútil? Nunca encontrei o benefício real disso.
TyCobb
2
Pareceu um pouco estranho, mas gosto da filosofia por trás disso!
Matko
14
Isso é uma vergonha. Mas você pode usar construtores primários livremente depois de passar para F #. Mude para F #, csharpers, seus novos recursos de idioma já estão lá;)
scrwtp
3
@TyCobb, os construtores primários são absolutamente essenciais com injeção de dependência: você pode usar injeção de construtor (em oposição à injeção de propriedade) sem repetir o nome (e tipo) de cada dependência quatro vezes.
Fyodor Soikin

Respostas:

143

Alguém tem alguma ideia sobre o que pode estar acontecendo?

Sim - os construtores primários foram removidos dos planos para o C # 6. Eles podem muito bem aparecer de alguma forma em uma versão posterior, mas não estão mais no C # 6.

Consulte a postagem "Mudanças no conjunto de recursos de idioma" da equipe para obter mais detalhes.

Jon Skeet
fonte
Isso é muito triste! Eles pareciam muito úteis.
Per Lundberg
@PerLundberg: Eles também não estão em C # 7. Suspeito que a equipe de design do C # revisitará os tipos de registro no C # 8, mas isso não significa que eles definitivamente chegarão lá.
Jon Skeet
Vamos esperar pelo melhor. :) Eu os vi mencionados em alguma postagem em C # sim, e parecia outra maneira interessante de tentar resolver o problema da "classe simples".
Per Lundberg