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.

(Bild: Pincasso/Shutterstock)
- Dr. Holger Schwichtenberg
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.").
C# 13.0 in älteren .NET-Versionen
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.
Stabile neue Sprachfeatures in C# 13.0
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ĂĽrlock
-Anweisungen und - Erweiterungen fĂĽr
ref structs
(auf Stack).
Experimentelles Sprachfeature in C# 13.0
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.
Vertagte neue Sprachfeatures
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>
undReadOnlySpan<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
extension
einfĂĽhren.
Breaking Changes in C# 13.0
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)