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?


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.