Neuerungen in C# 13

C# 13 bietet die folgenden neuen Features. Sie können diese Features mit der neuesten Visual Studio 2022-Version oder dem .NET 9 SDKtesten.

C# 13 wird in .NET 9 unterstützt. Weitere Informationen finden Sie unter C#-Sprachversionsverwaltung.

Sie können das neueste .NET 9 SDK Preview über die .NET-Downloadseite herunterladen. Sie können auch die Version Visual Studio 2022 Preview herunterladen, die das .NET 9 Preview SDK enthält.

Neue Features werden der Seite "Neuigkeiten in C#" hinzugefügt, wenn sie in öffentlichen Vorschauversionen verfügbar sind. Der Arbeitssatzabschnitt der Roslyn-Featurestatusseite verfolgt, wenn anstehende Features in die Hauptzweige zusammengeführt werden.

Hinweis

Wir interessieren uns für Ihr Feedback zu diesen Features. Wenn Sie bei einem dieser neuen Features auf Probleme stoßen, erstellen Sie ein neues Problem im Repository dotnet/roslyn.

Neue Escapesequenz

Sie können \eals zeichenliterale Escapesequenz für dasESCAPE Zeichen Unicode U+001B verwenden. Zuvor haben Sie \u001b oder \x1b verwendet. Die Verwendung \x1b wurde nicht empfohlen, da diese Zeichen Teil der Escapesequenz wurden, wenn die folgenden 1b Zeichen gültige hexadezimale Ziffern waren.

Methodengruppe natürlicher Typ

Dieses Feature macht kleine Optimierungen zur Überlastungsauflösung mit Methodengruppen. Das vorherige Verhalten war für den Compiler, um den vollständigen Satz von Kandidatenmethoden für eine Methodengruppe zu erstellen. Wenn ein natürlicher Typ benötigt wurde, wurde der natürliche Typ aus dem vollständigen Satz von Kandidatenmethoden bestimmt.

Das neue Verhalten besteht darin, die Gruppe von Kandidatenmethoden auf jedem Bereich zu kürzen, wobei die Kandidatenmethoden entfernt werden, die nicht anwendbar sind. In der Regel handelt es sich hierbei um generische Methoden mit der falschen Arität oder Einschränkungen, die nicht erfüllt sind. Der Prozess wird nur dann zum nächsten äußeren Bereich, wenn keine Kandidatenmethoden gefunden wurden. Dieser Prozess folgt genauer dem allgemeinen Algorithmus für die Überladungsauflösung. Wenn keine der Kandidatenmethoden übereinstimmt, die in einem bestimmten Bereich gefunden wurden, weist die Methodengruppe keinen natürlichen Typ auf.

Sie können die Details der Änderungen in der Vorschlagsspezifikationlesen.

Impliziter Indexzugriff

Der implizite Indexoperator ^"from the end" ist jetzt in einem Objektinitialisierungsausdruck zulässig. Sie können z. B. jetzt ein Array in einem Objektinitialisierer initialisieren, wie im folgenden Code gezeigt:

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 kann der Operator ^ nicht in einem Objektinitialisierer verwendet werden. Sie müssen die Elemente von vorne indizieren.

Weitere Informationen