Share via


Controllo delle versioni del linguaggio C#

Il compilatore C# più recente determina la versione di un linguaggio predefinito in base ai framework di destinazione del progetto. Visual Studio non fornisce un'interfaccia utente per modificare il valore, ma è possibile modificarlo modificando il file csproj. La scelta predefinita garantisce l'uso della versione del linguaggio più recente compatibile con il framework di destinazione. È possibile accedere alle funzionalità del linguaggio più recenti compatibili con la destinazione del progetto. Questa scelta predefinita garantisce anche di non usare un linguaggio che richiede tipi o comportamenti di runtime non disponibili nel framework di destinazione. La scelta di una versione del linguaggio più recente rispetto all'impostazione predefinita può causare errori di compilazione e runtime difficili da diagnosticare.

C# 12 è supportato solo in .NET 8 e versioni più recenti. C# 11 è supportato solo in .NET 7 e versioni più recenti. C# 10 è supportato solo in .NET 6 e versioni più recenti.

Per informazioni dettagliate sulle versioni di .NET supportate dalle versioni di Visual Studio di Visual Studio, vedere la pagina relativa alla compatibilità della piattaforma Visual Studio. Per informazioni dettagliate sulle versioni di .NET supportate dalle versioni di Visual Studio per Mac, vedere la pagina relativa alla compatibilità della piattaforma Visual Studio per Mac. Controllare la pagina Mono per C# per la compatibilità di Mono con le versioni C#.

Impostazioni predefinite

Il compilatore determina un'impostazione predefinita in base a queste regole:

Destinazione Versione Impostazione predefinita della versione del linguaggio C#
.NET 8.x C# 12
.NET 7.x C# 11
.NET 6.x C# 10
.NET 5.x C# 9.0
.NET Core 3.x C# 8.0
.NET Core 2.x C# 7.3
.NET Standard 2.1 C# 8.0
.NET Standard 2.0 C# 7.3
.NET Standard 1.x C# 7.3
.NET Framework tutto C# 7.3

Se il progetto è destinato a un framework di preview con una versione della lingua di anteprima corrispondente, la versione della lingua usata è la versione della lingua di anteprima. È possibile usare le funzionalità più recenti con tale anteprima in qualsiasi ambiente, senza influire sui progetti destinati a una versione rilasciata di .NET Core.

Importante

Il nuovo modello di progetto per Visual Studio 2017 ha aggiunto una voce <LangVersion>latest</LangVersion> ai nuovi file di progetto. Se si aggiorna il framework di destinazione per questi progetti, l'impostazione <LangVersion> può eseguire l'override predefinito per il nuovo framework di destinazione. Assicurarsi di rimuovere il <LangVersion>latest</LangVersion> dal file di progetto per assicurarsi che il progetto usi la versione consigliata del compilatore per il framework di destinazione. È possibile aggiornare il framework di destinazione per accedere alle funzionalità del linguaggio più recenti.

Informazioni di riferimento sulle versioni del linguaggio C#

La tabella seguente illustra tutte le versioni del linguaggio C# correnti. I compilatori meno recenti potrebbero non comprendere tutti i valori. Se si installa la versione più recente di .NET SDK, è possibile accedere a tutti gli elementi elencati.

Valore Significato
preview Il compilatore accetta tutte le sintassi di linguaggio valide dalla versione di anteprima più recente.
latest Il compilatore accetta la sintassi dalla versione rilasciata più recente del compilatore (inclusa la versione secondaria).
latestMajor
o default
Il compilatore accetta la sintassi dalla versione principale più recente rilasciata del compilatore.
12.0 Il compilatore accetta solo la sintassi inclusa in C# 12 o versione precedente.
11.0 Il compilatore accetta solo la sintassi inclusa in C# 11 o versione precedente.
10.0 Il compilatore accetta solo la sintassi inclusa in C# 10 o versione precedente.
9.0 Il compilatore accetta solo la sintassi inclusa in C# 9 o versione precedente.
8.0 Il compilatore accetta solo la sintassi inclusa in C# 8.0 o versione precedente.
7.3 Il compilatore accetta solo la sintassi inclusa in C# 7.3 o versione precedente.
7.2 Il compilatore accetta solo la sintassi inclusa in C# 7.2 o versione precedente.
7.1 Il compilatore accetta solo la sintassi inclusa in C# 7.1 o versione precedente.
7 Il compilatore accetta solo la sintassi inclusa in C# 7.0 o versione precedente.
6 Il compilatore accetta solo la sintassi inclusa in C# 6.0 o versione precedente.
5 Il compilatore accetta solo la sintassi inclusa in C# 5.0 o versione precedente.
4 Il compilatore accetta solo la sintassi inclusa in C# 4.0 o versione precedente.
3 Il compilatore accetta solo la sintassi inclusa in C# 3.0 o versione precedente.
ISO-2
o 2
Il compilatore accetta solo la sintassi inclusa nella specifica ISO/IEC 23270:2006 C# (2.0).
ISO-1
o 1
Il compilatore accetta solo la sintassi inclusa nella specifica ISO/IEC 23270:2003 C# (1.0/1.2).

Nota

Specificare LangVersion con il valore default è diverso dall'omissione dell'opzione LangVersion. Specificando default viene utilizzata la versione più recente del linguaggio supportata dal compilatore, senza tenere conto del framework di destinazione. Ad esempio, la compilazione di un progetto destinato a .NET 6 dalla versione corrente di Visual Studio 2022 usa C# 10 se LangVersion non è specificato, ma usa C# 12 se LangVersion è impostato su default.