Configuration requirejse pour C # 7 .NET / CLR / Visual Studio

Quelles sont les exigences minimales du framework .NET et de la version CLR pour exécuter C # 7? De plus, ai-je besoin de VS 2017 pour comstackr C # 7?

Vous n’avez pas besoin de cibler .NET 4.6 et versions ultérieures, ce qui est incorrect. Pour utiliser Tuples, vous avez besoin du package System.ValueTuple NuGet. Juste 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 qu’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 sur .NET 3.5 et probablement plus ancien. Pour les types “Task-like”, vous avez également besoin d’un package NuGet, https://www.nuget.org/packages/System.Threading.Tasks.Extensions/ . Ce paquet fonctionne également sur .NET 4.5 et versions ultérieures selon sa documentation.

Les autres fonctionnalités du C # 7 fonctionneront sur .NET 2 et les versions ultérieures, car elles ne sont que du sucre syntaxique. Par exemple, je viens d’écrire ce qui suit dans .NET 2.0 et il lance correctement:

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

De même, int.TryParse("123", out int i); fonctionne très bien dans .NET 2.0.

Je n’ai pas testé toutes les fonctionnalités du C # 7, mais en général, à l’exception de Tuples (et de leurs fonctions connexes telles que la déconstruction), il devrait fonctionner dans .NET 2.0 et supérieur car il ne s’agit que de sucre syntaxique. Cela étant dit, oui, vous avez besoin de VS2017 pour comstackr C # 7. Je suis sûr qu’à un moment donné, d’autres compilateurs supporteront le C # 7 mais pas aujourd’hui.

Caractéristiques J’ai confirmé le travail dans .NET 2.0:

  • Littéraux binarys
  • Séparateurs de chiffres
  • Paramètres d’inclusion
  • Utilisation de _ pour supprimer des parameters
  • Fonctions locales
  • Correspondance de modèle basée sur le type if (obj is int i) et case int i:
  • Correspondance constante if (i is 2)
  • Variables appariées if (i is var j)
  • Ref retours
  • Lancer des expressions
  • Expression au corps à corps
  • Expression des constructeurs et finaliseurs

Pour utiliser toute la puissance de C # 7 hors de la zone (sans référencer les nugets, etc.), vous devez utiliser VS 2017 et .Net 4.7 comme framework cible.