Das Erscheinen von C# 13 bringt einige spannende neue Funktionen mit sich. Diese Features können mit der neuesten Version von Visual Studio 2022 oder dem .NET 9 Preview SDK ausprobiert werden.
Neue Escapesequenz – \e
Die neue Escape-Sequenz \e kann als Zeichenliteral für das ESCAPE-Zeichen Unicode U+001B verwendet werden. Zuvor verwendete man \u001b oder \x1b. Die Verwendung von \x1b wurde nicht empfohlen, da, falls die folgenden Zeichen nach 1b gültige hexadezimale Ziffern waren, diese Teile der Escape-Sequenz wurden.
Verbesserungen bei natürlichen Typen von Methodengruppen
Diese Funktion optimiert die Überladungsauflösung von Methodengruppen. Zuvor erstellte der Compiler den vollständigen Satz an Kandidatenmethoden für eine Methodengruppe. Falls ein natürlicher Typ benötigt wurde, wurde der natürliche Typ aus dem vollständigen Satz an Kandidatenmethoden bestimmt.
Das neue Verhalten besteht darin, den Satz an Kandidatenmethoden in jedem Bereich zu beschneiden, indem nicht anwendbare Kandidatenmethoden entfernt werden. Typischerweise handelt es sich dabei um generische Methoden mit der falschen Arity oder um Bedingungen, die nicht erfüllt sind. Der Prozess setzt sich fort bis zum nächsten äusseren Bereich, nur wenn keine passenden Kandidatenmethoden gefunden wurden. Dieser Prozess folgt dem allgemeinen Algorithmus für die Überladungsauflösung genauer. Falls alle Kandidatenmethoden an einem bestimmten Bereich nicht übereinstimmen, hat die Methodengruppe keinen natürlichen Typ.
Impliziter Indexzugriff
Der implizite “vom Ende” Indexoperator ^ ist nun in einem Objektinitialisierungsausdruck erlaubt. Zum Beispiel können Sie jetzt ein Array in einer Objektinitialisierung wie folgt initialisieren:
”’
var v = new S()
{
buffer =
{
[^1] = 0,
[^2] = 1,
[^3] = 2,
[^4] = 3,
[^5] = 4,
[^6] = 5,
[^7] = 6,
[^8] = 7,
[^9] = 8,
[^10] = 9,
}
}
”’;
In Versionen vor C# 13 konnte der ^-Operator nicht in einer Objektinitialisierung verwendet werden. Sie mussten die Elemente von vorne indizieren.
C# 13 wird von .NET 9 unterstützt. Weitere Informationen finden Sie unter C#-Sprachversionierung.
Quelle: Neuerungen in C# 13 – C#-Leitfaden – C# | Microsoft Learn