Les constructeurs principaux ne compilent plus dans VS2015

98

Jusqu'à ce jour, je pouvais utiliser des constructeurs primaires, tels que:

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

Pour pouvoir le faire, dans le CTP Visual Studio précédent, je devais ajouter ceci au fichier csproj:

<LangVersion>Experimental</LangVersion>

Quoi qu'il en soit, cela ne fonctionne plus dans l'aperçu de Visual Studio 2015 (avec ou sans LangVersion). Quelqu'un a-t-il des idées sur ce qui pourrait se passer?

Matko
la source
6
Ils parlent de le supprimer ici
Jonesopolis
15
Suis-je le seul à penser que cette fonctionnalité était inutile? Je n'ai jamais trouvé le service médical rendu.
TyCobb
2
Cela me semblait un peu gênant, mais j'aime la philosophie derrière cela!
Matko
14
C'est une honte. Mais vous pouvez utiliser librement les constructeurs primaires une fois que vous passez à F #. Passez à F #, csharpers, vos nouvelles fonctionnalités de langage sont déjà là;)
scrwtp
3
@TyCobb, les constructeurs primaires sont absolument essentiels avec l'injection de dépendances: vous pouvez utiliser l'injection de constructeur (par opposition à l'injection de propriété) sans répéter le nom (et le type) de chaque dépendance quatre fois.
Fyodor Soikin

Réponses:

143

Quelqu'un a-t-il des idées sur ce qui pourrait se passer?

Oui, les constructeurs primaires ont été supprimés des plans pour C # 6. Ils pourraient bien faire une apparition sous une forme ou une autre dans une version ultérieure, mais ils ne sont plus en C # 6.

Pour plus de détails, consultez le message «Modifications apportées à l'ensemble des fonctionnalités linguistiques» de l'équipe.

Jon Skeet
la source
C'est vraiment triste! Ils semblaient très utiles.
Per Lundberg
@PerLundberg: Ils ne sont pas non plus en C # 7. Je soupçonne que l'équipe de conception C # revisitera les types d'enregistrements en C # 8, mais cela ne signifie pas qu'elle y parviendra définitivement.
Jon Skeet le
Esperons le meilleur. :) Je les ai vus mentionnés dans certains messages C # oui, et cela ressemblait à une autre façon intéressante d'essayer de résoudre le problème de la "classe simple".
Per Lundberg