Neu in .NET 10.0 [3]: C# 14.0
C# 14.0 wird mit .NET 10.0 ausgeliefert. Man kann dennoch einige C# 14.0-Sprachfeatures auch in älteren .NET-Versionen nutzen.
(Bild: Pincasso/Shutterstock)
- Dr. Holger Schwichtenberg
In einem .NET 10.0-Projekt (Projekteinstellung in .csproj-Datei: <TargetFramework>net10.0</TargetFramework>) ist C#-Sprachversion 14.0 der automatisch eingestellte Standard, auch ohne zusätzliches Tag <LangVersion>.
C# 14.0 wird offiziell von Microsoft erst ab .NET 10.0 unterstützt. Auf der Learn-Site von Microsoft heißt es: „C# 14.0 is supported only on .NET 10 and newer versions.“
Entwicklerinnen und Entwickler können allerdings auf eigene Verantwortung einige (aber nicht alle!) C# 14.0-Sprachfeatures in älteren .NET-Versionen einschließlich .NET Framework, .NET Core und Xamarin nutzen. Dazu muss man die <LangVersion> in der Projektdatei (.csproj) auf „14.0“ erhöhen:
<PropertyGroup>
<TargetFramework>.net8.0</TargetFramework>
<LangVersion>14.0</LangVersion>
</PropertyGroup>
Bitte beachten Sie aber, dass es für den Einsatz von C#-14.0-Sprachfeatures in .NET-Versionen vor 10.0 keinen technischen Support von Microsoft gibt. Bei Problemen können Sie Ihren Supportvertrag nicht nutzen, um Microsoft um Hilfe zu ersuchen. Dennoch ist der Einsatz höherer C#-Versionen in älteren .NET-Projekten in einigen Unternehmen gängige und problemlose Praxis.
Videos by heise
In C# 14.0 sind gegenĂĽber Version 13.0 acht wesentliche Neuerungen erschienen (die in den folgenden Wochen in dieser Blogserie vorgestellt werden):
- Neue OperatorĂĽberladungen fĂĽr +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>= und >>>
- Erweiterungsblöcke mit dem Schlüsselwort
extension - Semi-Auto Properties mit dem SchlĂĽsselwort
field(die gab es schon in C# 13.0, dort aber experimentell) - Partielle Konstruktoren und partielle Ereignisse
- Null-Conditional Assignment
- Vereinfachung fĂĽr
nameof()mit generischen Typen - Vereinfachungen bei Lambda-AusdrĂĽcken
- Mehr Konvertierungen fĂĽr Spans
Von den oben genannten neuen Sprachfeatures in .NET 10.0 funktionieren alle bis auf eine Ausnahme auch in älteren .NET-Versionen, sofern man <LangVersion>latest</LangVersion> in der Projektdatei setzt. Die Ausnahme sind die neuen Operatorüberladungen. Um diese geht es im nächsten Artikel dieser Serie.
(rme)