Nyheter i C# 13

C# 13 innehåller följande nya funktioner. Du kan prova de här funktionerna med den senaste Visual Studio 2022-versionen eller .NET 9 Preview SDK.

C# 13 stöds på .NET 9. Mer information finns i C#-språkversioner.

Du kan ladda ned den senaste förhandsversionen av .NET 9 SDK från nedladdningssidan för .NET. Du kan också ladda ned Visual Studio 2022 – förhandsversion, som innehåller .NET 9 Preview SDK.

Nya funktioner läggs till på sidan "Nyheter i C#" när de är tillgängliga i offentliga förhandsversioner. Arbetsuppsättningsavsnittet på roslyn-funktionsstatussidan spårar när kommande funktioner slås samman till huvudgrenen.

Kommentar

Vi är intresserade av din feedback om dessa funktioner. Om du får problem med någon av dessa nya funktioner skapar du ett nytt problemdotnet/roslyn-lagringsplatsen .

Ny escape-sekvens

Du kan använda \e som en teckenliteral escape-sekvens för ESCAPE tecknet Unicode U+001B. Tidigare använde \u001b du eller \x1b. Användning \x1b rekommenderades inte eftersom om nästa tecken efter 1b var giltiga hexadecimala siffror, blev dessa tecken en del av escape-sekvensen.

Naturlig typ av metodgrupp

Den här funktionen gör små optimeringar för överbelastningsmatchning som involverar metodgrupper. Det tidigare beteendet var att kompilatorn skulle konstruera hela uppsättningen kandidatmetoder för en metodgrupp. Om en naturlig typ behövdes fastställdes den naturliga typen från den fullständiga uppsättningen kandidatmetoder.

Det nya beteendet är att rensa uppsättningen kandidatmetoder i varje omfång och ta bort de kandidatmetoder som inte är tillämpliga. Det här är vanligtvis allmänna metoder med fel aritet eller begränsningar som inte är uppfyllda. Processen fortsätter endast till nästa yttre omfång om inga kandidatmetoder har hittats. Den här processen följer närmare den allmänna algoritmen för överbelastningsmatchning. Om alla kandidatmetoder som hittas i ett visst omfång inte matchar har metodgruppen ingen naturlig typ.

Du kan läsa information om ändringarna i förslagsspecifikationen.

Implicit indexåtkomst

Den implicita indexoperatorn ^"från slutet" , , tillåts nu i ett objektinitieringsuttryck. Du kan till exempel nu initiera en matris i en objektinitierare enligt följande kod:

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
    }
};

I versioner före C# 13 kan operatorn ^ inte användas i en objektinitierare. Du måste indexeras elementen framifrån.

Se även