Novità di C# 13

C# 13 include le nuove funzionalità seguenti. È possibile provare queste funzionalità usando la versione più recente di Visual Studio 2022 o .NET 9 Preview SDK.

C# 13 è supportato in .NET 9. Per altre informazioni, vedere controllo delle versioni del linguaggio C#.

È possibile scaricare la versione più recente di .NET 9 Preview SDK dalla pagina di download di .NET. È anche possibile scaricare Visual Studio 2022 - preview, che include .NET 9 Preview SDK.

Le nuove funzionalità vengono aggiunte alla pagina "Novità in C#" quando sono disponibili nelle versioni di anteprima pubblica. La sezione working set della pagina di stato della funzionalità roslyn tiene traccia del momento in cui le funzionalità future vengono unite nel ramo principale.

Nota

Microsoft è interessato ai commenti e suggerimenti su queste funzionalità. Se si riscontrano problemi con una di queste nuove funzionalità, creare un nuovo problema nel repository dotnet/roslyn .

Nuova sequenza di escape

È possibile usare \e come sequenza di escape letterale carattere per il ESCAPE carattere Unicode U+001B. In precedenza, è stato usato \u001b o \x1b. L'utilizzo \x1b non è consigliato perché se i caratteri successivi seguenti 1b erano cifre esadecimali valide, tali caratteri sono diventati parte della sequenza di escape.

Tipo naturale del gruppo di metodi

Questa funzionalità rende piccole ottimizzazioni per la risoluzione dell'overload che coinvolge i gruppi di metodi. Il comportamento precedente era destinato al compilatore per costruire il set completo di metodi candidati per un gruppo di metodi. Se era necessario un tipo naturale, il tipo naturale è stato determinato dal set completo di metodi candidati.

Il nuovo comportamento consiste nell'eliminare il set di metodi candidati in ogni ambito, rimuovendo i metodi candidati non applicabili. In genere, si tratta di metodi generici con l'arità errata o vincoli che non sono soddisfatti. Il processo continua all'ambito esterno successivo solo se non sono stati trovati metodi candidati. Questo processo segue più da vicino l'algoritmo generale per la risoluzione dell'overload. Se tutti i metodi candidati trovati in un determinato ambito non corrispondono, il gruppo di metodi non ha un tipo naturale.

È possibile leggere i dettagli delle modifiche nella specifica della proposta.

Accesso implicito all'indice

L'operatore ^di indice implicito "from the end", , è ora consentito in un'espressione di inizializzatore di oggetto. Ad esempio, è ora possibile inizializzare una matrice in un inizializzatore di oggetto, come illustrato nel codice seguente:

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

Nelle versioni precedenti a C# 13, l'operatore ^ non può essere usato in un inizializzatore di oggetto. È necessario indicizzare gli elementi dalla parte anteriore.

Vedi anche