Skip to content
  • English Deutsch

benjamin-abt.com

Performance is a feature | Cloud - AI - Azure - .NET - Sustainability

  • Home
  • Blog
  • Portfolio
    • Overview
    • Workshops & Training
    • Publications
  • Contact
  • Home
  • Blog

C# 9 - Was gibt's Neues?

C# 9 - Was gibt's Neues?
June 11, 2020 3 min read BEN ABT
C# .NET

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.

C#
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.

C#
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.

C#
Person peter = new Person("Peter", "Pan");

Mit C# 9 kann man sich die zweite Nennung des Typs sparen.

C#
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.

C#
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.

C#
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

Building Custom AI Tooling with the GitHub Copilot SDK for .NET

Feb 3, 2026 - 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 . …

Containerizing .NET in 2026 Without a Dockerfile

Oct 20, 2026 - 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 …

Problem Details in ASP.NET Core and .NET 11

Oct 5, 2026 - 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 …


BEN ABT

BEN ABT

Ben is Chief Engineering Officer and Principal Software Engineer at Medialesson.de, with a strong focus on .NET and Microsoft Azure. In his professional role, he designs and builds highly scalable platforms for hybrid and cloud-based scenarios. He also advises companies and C-levels on migrating to the sovereign cloud.

He runs myCSharp.de, the largest and most active German-speaking C# community forum, actively contributes to both his own and external open-source projects and regularly shares his knowledge through his blog, at community events, conferences and as a writer for technical magazines.

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.

New Platforms

Modernization

Training & Consulting

Contact Me
X Facebook LinkedIn WhatsApp
Back Next Blog Post

Open for work!

Contact Me
BEN ABT BEN ABT Software Engineer · Microsoft MVP Passionate about .NET, Azure, performance optimization and sustainable software engineering.

Medialesson GmbH Logo

Microsoft MVP Logo

Recent posts

View all
Stop Using nginx as Your Default Static File Server in Docker

Stop Using nginx as Your Default Static File Server in …

Oct 24, 2026
Containerizing .NET in 2026 Without a Dockerfile

Containerizing .NET in 2026 Without a Dockerfile

Oct 20, 2026
Problem Details in ASP.NET Core and .NET 11

Problem Details in ASP.NET Core and .NET 11

Oct 5, 2026
Resilience in .NET with Microsoft.Extensions.Resilience

Resilience in .NET with Microsoft.Extensions.Resilience

Sep 21, 2026
What Matters in ASP.NET Core 11

What Matters in ASP.NET Core 11

Sep 14, 2026

Tags

.NET (192) Csharp (96) ASP.NET Core (48) Azure (41) DevOps (17) Docker (14) Microsoft (14) EF Core (11) Microsoft MVP (11) AI (10) GitHub (10) GitHub Copilot (10) ASP.NET (9) Security (9) Synology (9) Architecture (8) Raspberry (8) Azure Functions (7) Cloudflare (7) Bicep (6)
benjamin-abt.com

About BEN

Benjamin Abt is a Software Engineer, Platform Architect and Microsoft MVP specializing in .NET, Azure, cloud architecture, performance optimization and sustainable software development.

Connect

  • Follow me on GitHub
  • Follow me on LinkedIn
  • Follow me on Mastodon
  • Microsoft MVP profile
  • Follow SchwabenCode on GitHub
  • Follow me on X

Quick Links

  • Portfolio
  • Blog
  • Workshops & Training
  • Publications
  • Get in Touch
  • Sitemap
Open for Work

© Copyright Benjamin Abt & SchwabenCode | 2011 - 2026

Content licensed under CC BY 4.0 unless otherwise noted.

  • Impressum
  • Privacy
  • Contact