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

2.0 KiB

C# Version 7.2

Veröffentlicht im November 2017.

Mit C# 7.2 wurden einige kleine, aber nützliche Sprachfeatures hinzugefügt:

Neue Features

Initialisierer für stackalloc-Arrays

Direkte Initialisierung von Arrays auf dem Stack.

Span<int> zahlen = stackalloc int[] { 1, 2, 3 };

fixed-Anweisung für beliebige Typen

fixed kann mit jedem Typ verwendet werden, der ein Muster unterstützt.

Zugriff auf feste Felder ohne Anheften

Erlaubt den Zugriff auf Felder, ohne sie explizit zu fixieren.

Neuzuweisung lokaler ref-Variablen

Ref-Variablen können neu zugewiesen werden.

ref int r = ref arr[0];
r = ref arr[1];

readonly struct-Typen

Strukturen können als unveränderlich deklariert werden.

public readonly struct Punkt
{
    public int X { get; }
    public int Y { get; }
}

in-Parameter

Argumente werden als Referenz übergeben, aber nicht verändert.

void Print(in int x)
{
    Console.WriteLine(x);
}

ref readonly-Rückgaben

Methoden können einen Wert als Referenz zurückgeben, ohne Schreibzugriff zu erlauben.

public ref readonly int GetValue() => ref value;

ref struct-Typen

Strukturen, die direkt auf verwalteten Speicher zugreifen und nur auf dem Stack liegen dürfen.

ref struct Buffer { /* ... */ }

Allgemeinere Beschränkungen

Mehr Flexibilität bei Generics.

Nicht schließende benannte Argumente

Positionale Argumente können auf benannte Argumente folgen.

Print("Hallo", times: 3);

Führende Unterstriche in numerischen Literalen

Numerische Literale dürfen mit Unterstrichen beginnen.

int zahl = _1_000_000;

private protected-Zugriffsmodifizierer

Zugriff für abgeleitete Klassen innerhalb derselben Assembly.

private protected int Wert;

Bedingte ref-Ausdrücke

Das Ergebnis eines bedingten Ausdrucks kann ein Verweis sein.

ref int r = ref (a > b ? ref x : ref y);

C# 7.2 brachte viele kleine Verbesserungen für Performance, Lesbarkeit und Sicherheit.