
Dieser Artikel stammt aus dem Jahr 2020. Versionen, Werkzeuge und Empfehlungen können sich seitdem geändert haben. Neuere Beiträge findest du unter .NET.
Noch fünf Monate, dann erscheint C# 9 - doch was gibt es eigentlich alles Neues? Und für wen sind all die Neuerungen gedacht?
Release mit .NET 5
Der offizielle Startschuss von C# 9 ist der 10. November 2020, wenn auch .NET 5 veröffentlicht wird.
Doch schon heute kann man sich die Preview von .NET 5 herunterladen, ausprobieren und C# 9 kennenlernen. Dazu gibt es die entsprechenden SDKs auf https://dot.net . Bei den Previews empfiehlt es sich auch immer die Visual Studio Preview zu verwenden, da diese sehr sehr viel früher entsprechenden SDK-Preview erhält.
Neu: Die Records
Mit C# 9 wird es eine neue Form von Klassen geben, die speziell für Datenstrukturen gedacht sind: die Records.
Um eine Klasse als Record zu deklarieren, muss das Schlüsselword data vorangestellt werden.
data class Person { string Firstname; string LastName } Die Besonderheit - und der Sinn - von data ist, dass damit das Objekt eine value-ähnliche Eigenschaft enthält, ohne dabei jedoch als struct behandelt zu werden. Also ganz im Sinne der Performance und dem speicherschohnenden Umgang.
Init Only Properties
Datenstrukturen werden meistens so verwendet, dass die entsprechenden Objekte einmalig erstellt, jedoch nicht mehr verändert werden - gerade zB. bei der Verwendung als DTO (Data Transfer Object).
Entsprechend macht das neue Schlüsselwort init sinn: es definiert, dass eine Eigenschaft nur bei der Initialisierung des entsprechenden Objekts gesetzt werden kann - danach vollständig read-only.
1public data class Person
2{
3 public string FirstName { get; init; }
4 public string LastName { get; init; }
5}Neues im Pattern Matching
Pattern Matching - also der typische Syntaxzucker und damit das vereinfachen der C# Schreibweise - hat sich durch all die letzten C# Versionen gezogen; viel wurde von anderen Sprachen übernommen - sinvolles und auch eher schwieriges.
Auch in C# 9 gibt es neues im Pattern Matching.
Es ist diesmal so ausführlich, dass ich an dieser Stelle besser auf den Build 2020 Talk von Mads Torgersen verweise.
Vereinfachtes Instanziieren von Objekten
Bisher musste man immer die Klasse “doppelt” nennen, wenn man ein Objekt erstellen wollte. Die sogenannte target type new expression hat jedoch nun ebenfalls Einzug gehalten, die sich sehr viele gewunschen haben.
Person peter = new Person("Peter", "Pan");Mit C# 9 kann man sich die zweite Nennung des Typs sparen.
Person peter = new ("Peter", "Pan");Das Ganze funktioniert natürlich nicht mit var ;-)
Covariant returns
Im Umgang mit OOP und entsprechenden Vererbungsstrukturen hat man sich oft ein Override gewunschen, mit dem man auch den Return Type ändern kann. Hatte man eine abstrakte Klassen, die für viele als Basis verwendet wurde, so konnte man entsprechend einen Typ für eine Methodenrückgabe definieren.
Beispielsweise ein Tier, das entsprechend “irgendein” Futter erhält.
1abstract class Animal
2{
3 public abstract Food GetFood();
4 ...
5}Bei der Konkretisierung der abstrakten Klasse - hier Tiger basierend auf Animal - hätte man das “Futter” nun aber nicht allgemein, sondern konkret: Fleisch.
1class Tiger : Animal
2{
3 public override Meat GetFood() => ...;
4}Dies ist nun mit C# 9 möglich, sodass man sich entsprechende Hilfstrukturen sparen kann und wirklich direkt mit der konkreten Klasse arbeiten kann.
Native Ints
C# erhält nach vielen Jahren auch mal wieder einen neuen Datentypen: die Native Ints.
Den wirklichen Mehrwert werden vor allem die spüren, die sehr Performance-hungrige Algorithmen bzw. Low Level Code und Co schreiben, da der fokussierte Zweck der Performance unterliegt: native ints entsprechend exakt der Wortgröße der CPU, sodass der JIT besseren und schnelleren Maschinencode erzeugen kann.
Aktueller Fortschritt auf GitHub
Auf GitHub zeigt das Team rund um C# transparent, welche Features bereits fertig sind, welche Neuerungen noch Feedback aus der Community brauchen und welche Ideen existieren.
Related articles

- 5 min read
Building Custom AI Tooling with the GitHub Copilot SDK for .NET
The landscape of AI development is shifting rapidly from simple chat interfaces to fully integrated, agentic workflows like the Ralph Loop . …

- 11 min read
Containerizing .NET in 2026 Without a Dockerfile
Most .NET Dockerfiles repeat the same five steps: restore, publish, select the matching Microsoft runtime image, copy the output and start …

- 12 min read
Problem Details in ASP.NET Core and .NET 11
builder.Services.AddProblemDetails() registers infrastructure. It does not create an error contract. An ASP.NET Core request can fail during …
Let's Work Together
Looking for an experienced Platform Architect or Engineer for your next project? Whether it's cloud migration, platform modernization or building new solutions from scratch - I'm here to help you succeed.
