Nieuw in C# 13

C# 13 bevat de volgende nieuwe functies. U kunt deze functies proberen met behulp van de nieuwste versie van Visual Studio 2022 of de .NET 9 Preview SDK.

C# 13 wordt ondersteund op .NET 9. Zie C#-taalversiebeheer voor meer informatie.

U kunt de nieuwste .NET 9 preview SDK downloaden via de .NET-downloadpagina. U kunt ook Visual Studio 2022 - preview downloaden, waaronder de .NET 9 Preview SDK.

Nieuwe functies worden toegevoegd aan de pagina 'Wat is er nieuw in C#' wanneer deze beschikbaar zijn in openbare preview-versies. In de sectie werkset van de roslyn-functiestatuspagina wordt bijgehouden wanneer toekomstige functies worden samengevoegd in de hoofdbranch.

Notitie

We zijn geïnteresseerd in uw feedback over deze functies. Als u problemen ondervindt met een van deze nieuwe functies, maakt u een nieuw probleem in de dotnet-/roslyn-opslagplaats .

Nieuwe escapereeks

U kunt een letterlijke escapereeks voor tekens gebruiken \e voor het ESCAPE teken UnicodeU+001B. Eerder gebruikte \u001b of \x1b. Het gebruik \x1b is niet aanbevolen omdat als de volgende tekens 1b geldige hexadecimale cijfers waren, deze tekens deel uitmaakten van de escape-reeks.

Natuurlijke type methodegroep

Deze functie maakt kleine optimalisaties tot overbelastingsresolutie met behulp van methodegroepen. Het vorige gedrag was voor de compiler om de volledige set kandidaatmethoden voor een methodegroep samen te stellen. Als een natuurlijk type nodig was, werd het natuurlijke type bepaald op basis van de volledige set kandidaatmethoden.

Het nieuwe gedrag is het verwijderen van de set kandidaatmethoden voor elk bereik, waardoor de kandidaatmethoden die niet van toepassing zijn, worden verwijderd. Dit zijn meestal algemene methoden met de verkeerde arity of beperkingen waaraan niet wordt voldaan. Het proces gaat alleen door naar het volgende buitenste bereik als er geen kandidaatmethoden zijn gevonden. Dit proces volgt het algemene algoritme voor overbelastingsresolutie nauwkeuriger. Als alle kandidaatmethoden in een bepaald bereik niet overeenkomen, heeft de methodegroep geen natuurlijk type.

U kunt de details van de wijzigingen in de voorstelspecificatie lezen.

Impliciete indextoegang

De impliciete indexoperator 'van het einde', ^is nu toegestaan in een object initializer-expressie. U kunt nu bijvoorbeeld een matrix initialiseren in een object-initialisatiefunctie, zoals wordt weergegeven in de volgende code:

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 versies vóór C# 13 kan de ^ operator niet worden gebruikt in een object-initialisatiefunctie. U moet de elementen van de voorzijde indexeren.

Zie ook