it-swarm.com.de

Versionsanforderungen für C # 7 .NET / CLR / Visual Studio

Was sind die Mindestanforderungen für .NET Framework und CLR-Version zum Ausführen von C # 7? Brauche ich VS 2017, um C # 7 zu kompilieren?

46
ilias

Sie müssen nicht auf .NET 4.6 und höher abzielen, das ist falsch. Zur Verwendung von Tuples benötigen Sie das NuGet-Paket System.ValueTuple. Direkt am https://www.nuget.org/packages/System.ValueTuple/ können Sie sehen, dass es 4.5 und höher unterstützt und tatsächlich 4.0 und höher unterstützt. Und wenn Sie verrückt werden möchten, wenn Sie Ihre eigene System.ValueTuple - Klasse erstellen, die genau das tut, was dieses Paket tut, funktioniert es unter .NET 3.5 und wahrscheinlich auch älter. Für "aufgabenähnliche" Typen benötigen Sie auch ein NuGet-Paket https://www.nuget.org/packages/System.Threading.Tasks.Extensions/ . Dieses Paket funktioniert auch unter .NET 4.5 und neuer gemäß der Dokumentation.

Andere C # 7-Funktionen funktionieren nur in .NET 2 und höher, da es sich nur um syntaktischen Zucker handelt. Ich habe zum Beispiel gerade Folgendes in .NET 2.0 geschrieben und es wird korrekt ausgelöst:

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

Ebenso funktioniert int.TryParse("123", out int i); in .NET 2.0 einwandfrei.

Ich habe nicht jedes einzelne C # 7-Feature getestet, aber im Allgemeinen sollte es mit Ausnahme von Tuples (und den damit verbundenen Features wie Dekonstruktion) in .NET 2.0 und höher funktionieren, da das meiste davon nur syntaktischer Zucker ist. Davon abgesehen benötigen Sie VS2017, um C # 7 zu kompilieren. Ich bin mir sicher, dass irgendwann andere Compiler C # 7 unterstützen werden, aber heute nicht mehr.

Funktionen, die ich in .NET 2.0 bestätigt habe:

  • Binäre Literale
  • Zifferntrennzeichen
  • Inline out Parameter
  • Verwenden Sie _, Um Parameter zu verwerfen
  • Lokale Funktionen
  • Typbasierte Mustererkennung if (obj is int i) und case int i:
  • Konstante Mustererkennung if (i is 2)
  • Var Pattern Matching if (i is var j)
  • Ref kehrt zurück
  • Ausdrücke werfen
  • Ausdrucksstarke Getter und Setter
  • Expressionsbodierte Konstruktoren und Finalisierer
98
dmeglio

Um die volle Leistung von C # 7 sofort nutzen zu können (ohne auf NuGet-Pakete usw. zu verweisen), benötigen Sie VS 2017 und .NET 4.7 als Ziel-Framework.

3
SerG