C# 9.0: Neue Features im Überblick

C# 9.0: Neue Features im Überblick

25 Mar 2021 - Matthias Voigt

Mit der Veröffentlichung von .NET 5 und C# 9.0 hat Microsoft eine Reihe spannender neuer Features eingeführt, die die Entwicklung in C# noch leistungsfähiger und angenehmer machen. In diesem Artikel möchte ich einige der wichtigsten Neuerungen in C# 9.0 vorstellen.

Rekord-Typen

Rekord-Typen sind eine der herausragendsten Neuerungen in C# 9.0. Sie ermöglichen es, unveränderliche Datentypen mit minimalem Boilerplate-Code zu erstellen. Hier ein einfaches Beispiel:

public record Person(string FirstName, string LastName);

Mit nur einer Zeile Code haben wir einen unveränderlichen Datentyp erstellt, der automatisch Methoden wie ToString(), Equals() und GetHashCode() generiert.

Init-Only Setter

Init-Only Setter ermöglichen es, Eigenschaften eines Objekts nur während der Initialisierung festzulegen. Dies fördert die Immutabilität und macht den Code sicherer:

public class Car
{
    public string Make { get; init; }
    public string Model { get; init; }
}

Mit-Muster

Das Mit-Muster ermöglicht es, ein Objekt basierend auf einem vorhandenen Objekt zu erstellen, wobei einige Eigenschaften geändert werden. Dies ist besonders nützlich in Verbindung mit Rekord-Typen:

var person1 = new Person("John", "Doe");
var person2 = person1 with { LastName = "Smith" };

Verbesserungen bei “pattern matching”

C# 9.0 bringt auch Verbesserungen bei den Musterabgleichen. Neue Muster wie and, or und not ermöglichen komplexere und ausdrucksstärkere Bedingungen:

public static string Classify(object obj) => obj switch
{
    int i when i > 0 => "Positive integer",
    int i when i < 0 => "Negative integer",
    string s => "String",
    _ => "Unknown"
};

Top-Level-Statements

Top-Level-Statements ermöglichen es, einfache Programme ohne explizite Main-Methode zu schreiben. Dies ist besonders nützlich für Skripting und kleine Utility-Programme:

using System;

Console.WriteLine("Hello, World!");

Records vs. Klassen

Ein wichtiger Unterschied zwischen Rekord-Typen und regulären Klassen ist, dass Rekord-Typen für unveränderliche Datenstrukturen optimiert sind. Während Klassen in der Regel veränderlich sind, bieten Rekord-Typen eine sicherere und weniger fehleranfällige Alternative.

Fazit

C# 9.0 bringt eine Vielzahl nützlicher Features, die die Entwicklung mit der Sprache effizienter und angenehmer machen. Von Rekord-Typen über Init-Only Setter bis hin zu verbesserten Musterabgleichen bietet die neue Version viele Möglichkeiten, den Code sauberer und ausdrucksstärker zu gestalten. Es lohnt sich definitiv, diese neuen Features in zukünftigen Projekten zu nutzen und zu erkunden.

Für weitere Details und eine ausführliche Anleitung zu den neuen Features in C# 9.0 besuche die offizielle Microsoft-Dokumentation.