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# 13 è supportato solo in .NET 9 e versioni successive. C# 12 è supportato solo in .NET 8 e versioni più recenti. C# 11 è supportato solo in .NET 7 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. 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 | 9.x | C# 13 |
.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.
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. |
13.0 |
Il compilatore accetta solo la sintassi inclusa in C# 13 o versione precedente. |
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
.