Neu in .NET 9.0 [3]: Features in der Programmiersprache C# 13.0

Die Programmiersprache C# 13.0 ist zusammen mit Visual Studio 2022 Version 17.12 und .NET 9.0 am 12. November 2024 erschienen.

In Pocket speichern vorlesen Druckansicht

(Bild: Pincasso/Shutterstock)

Lesezeit: 3 Min.
Von
  • Dr. Holger Schwichtenberg
Inhaltsverzeichnis

Das neue C# 13.0 unterstĂĽtzt Microsoft offiziell erst ab .NET 9.0 ("C# 13.0 is supported only on .NET 9 and newer vesions.").

Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Man kann allerdings die meisten Sprachfeatures aus C# auch in älteren .NET-Versionen einschließlich .NET Framework, .NET Core und Xamarin nutzen. Dazu muss man die verwendete Compilerversion per Tag <LangVersion> in der Projektdatei (.csproj) auf "13.0" erhöhen.

<LangVersion>13.0</LangVersion>

Damit Sprachfeatures auch in Versionen vor .NET 9.0 funktionieren, dürfen sie keine Abhängigkeit von in .NET 9.0 eingeführten Basisbibliotheksklassen haben. Sofern man <LangVersion>latest</LangVersion> in der Projektdatei setzt, sind in älteren Versionen folgende neuen Sprachfeatures von C# 13.0 möglich:

  • Partielle Properties und partielle Indexer
  • Generische Mengen in Verbindung mit dem SchlĂĽsselwort params
  • Neuerungen fĂĽr ref struct, auĂźer der Verwendung als Typargument
  • Escape-Zeichen \e

Zu beachten ist aber, dass es für den Einsatz der neuen Sprachfeatures in .NET-Versionen vor 9.0 keinen technischen Support von Microsoft gibt, man also bei Problemen nicht den Support-Vertrag nutzen kann, 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.

In C# 13.0 sind folgende neue Sprachfeatures erschienen, die ich in den kommenden Wochen in dieser Blogserie besprechen werde:

  • Partielle Properties und partielle Indexer,
  • neues ESCAPE-Zeichen \e fĂĽr ANSI/VT100 Terminal Control Escape Sequences,
  • Prioritäten fĂĽr MethodenĂĽberladungen,
  • Generische Mengentypen bei params,
  • Objekt-Initialisierung mit Index-Operator vom Ende,
  • Neue Klasse Threading.Lock fĂĽr lock-Anweisungen und
  • Erweiterungen fĂĽr ref structs (auf Stack).

Ein weiteres Sprachfeature ist in C# 13.0 in experimenteller Form enthalten: halbautomatische Properties mit dem neuen SchlĂĽsselwort field. Dieses SchlĂĽsselwort ist nur verfĂĽgbar, wenn man in einer Projektdatei entweder <EnablePreviewFeatures>True</EnablePreviewFeatures> oder <LangVersion>preview</LangVersion> setzt.

Folgende Sprachfeatures waren fĂĽr C# 13.0 geplant und zum Teil schon als Prototyp verfĂĽgbar, wurden aber dann auf C# 14.0 vertagt, das im November 2025 erscheinen soll :

  • Tupel-Dekonstruktion(int x, string y) = default statt (default, default)
  • Automatische Konvertierung zwischen Array, Span<T> und ReadOnlySpan<T>
  • Extensions: eine weiterentwickelte, generalisierte Form der Extension Methods, bei der man nicht nur Instanzmethoden, sondern Methoden und Properties sowohl auf Instanz- als auch Klassenebene ("static") ergänzen kann. Dazu will Microsoft das neue SchlĂĽsselwort extensioneinfĂĽhren.

Es gibt einige wenige Breaking Changes im Verhalten des Compilers in C# 13.0 gegenüber C# 12.0. Dabei handelt es sich jedoch um Sonderfälle von geringer Bedeutung, beispielsweise das Verbot der Annotation [InlineArray] auf record struct).

(rme)