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.
- Ny escape-sekvens –
\e
. - Förbättringar av naturlig typ av metodgrupp
- Implicit indexerareåtkomst i objektinitierare
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 problem på dotnet/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.