Files
2025-09-28 17:52:30 +02:00
..
2025-09-28 17:52:30 +02:00

C# Version 9.0

Veröffentlicht im November 2020 mit .NET 5.

Neue Features

Datensätze (record)

Kompakte Syntax für unveränderliche Datencontainer mit Wertsemantik.

public record Person(string Name, int Alter);
var p1 = new Person("Jonas", 30);
var p2 = p1 with { Alter = 31 };

init-only-Setter

Eigenschaften können nur bei der Initialisierung gesetzt werden.

public class Auto
{
    public string Marke { get; init; }
}

Top-Level-Anweisungen

Kein Main-Methoden- oder Klassen-Wrapper nötig.

Console.WriteLine("Hallo Welt!");

Verbesserter Musterabgleich

  • Relationale Muster: <, >, <=, >=
  • Logische Muster: and, or, not
if (wert is >= 0 and <= 10) { /* ... */ }
if (obj is not null) { /* ... */ }

Integerwerte mit nativer Größe

nint und nuint für CPU-native Integer.

nint x = 42;

Funktionszeiger

Direkte Zeiger auf Funktionen.

delegate*<int, int, int> addPtr = &Add;

Modulinitialisierer

Methoden, die beim Laden einer Assembly ausgeführt werden.

[ModuleInitializer]
public static void Init() { /* ... */ }

Weitere Features

  • Zieltypisierte new-Ausdrücke: List<int> zahlen = new();
  • Anonyme static-Funktionen: static () => 42
  • Lambda-Parameter verwerfen: _ => ...
  • Attribute auf lokale Funktionen
  • Erweiterung von GetEnumerator() für foreach
  • Partielle Methoden mit Rückgabewert und Zugriffsmodifizierer

C# 9.0 bringt viele moderne Features für produktiven, kompakten und sicheren Code.