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.