web-dev-qa-db-fra.com

Exigences de la version .NET / CLR / Visual Studio C # 7

Quelle est la configuration minimale requise pour .NET Framework et la version CLR pour exécuter C # 7? De plus, ai-je besoin de VS 2017 pour compiler le C # 7?

46
ilias

Vous n'avez PAS besoin de cibler .NET 4.6 ou supérieur, cela est incorrect. Pour utiliser Tuples, vous avez besoin du package System.ValueTuple NuGet. Droit sur https://www.nuget.org/packages/System.ValueTuple/ vous pouvez voir qu'il indique qu'il prend en charge les versions 4.5 et supérieures, et en réalité, il prend en charge les versions 4.0 et supérieures. Et si vous voulez devenir fou, si vous créez votre propre classe System.ValueTuple Qui fait exactement ce que fait ce paquet, cela fonctionnera avec .NET 3.5 et probablement aussi avec les anciennes versions. Pour les types "de type tâche", vous avez également besoin d'un paquet NuGet, https://www.nuget.org/packages/System.Threading.Tasks.Extensions/ . Ce paquet fonctionne également sur .NET 4.5 et plus récent selon sa documentation.

D'autres fonctionnalités de C # 7 ne fonctionneront que sur .NET 2 et versions ultérieures, car ce ne sont que des sucres syntaxiques. Par exemple, je viens d’écrire ce qui suit dans .NET 2.0 et cela jette correctement:

static void Main(string[] args)
{
    string test = null;
    string d = test ?? throw new ApplicationException("test");
}

De même, int.TryParse("123", out int i); fonctionne parfaitement dans .NET 2.0.

Je n'ai pas testé toutes les fonctionnalités de C # 7, mais en général, à l'exception de Tuples (et des fonctionnalités associées telles que la déconstruction), cela devrait fonctionner dans .NET 2.0 et les versions ultérieures, car la plupart de ces fonctionnalités ne sont que du sucre syntaxique. Cela étant dit, oui, vous avez besoin de VS2017 pour compiler le C # 7. Je suis sûr qu'à un moment donné, d'autres compilateurs soutiendront le C # 7, mais pas aujourd'hui.

Les caractéristiques que j'ai confirmées fonctionnent dans .NET 2.0:

  • Littéraux binaires
  • Séparateurs de chiffres
  • Paramètres en ligne out
  • Utilisation de _ Pour supprimer des paramètres
  • Fonctions locales
  • Correspondance de modèle basée sur le type if (obj is int i) et case int i:
  • Correspondance constante des motifs if (i is 2)
  • Correspondance de motif var if (i is var j)
  • Ref renvoie
  • Lancer des expressions
  • Getters et setters
  • Constructeurs et finaliseurs avec corps d'expression
98
dmeglio

Pour utiliser toute la puissance de C # 7 prête à l'emploi (sans faire référence aux packages NuGet, etc.), vous avez besoin de VS 2017 et de .NET 4.7 comme infrastructure cible.

3
SerG