Controllo delle versioni del linguaggio C#C# language versioning

Il C# compilatore determina la versione di un linguaggio predefinito basata su uno o più framework di destinazione del progetto.The C# compiler determines a default language version based on your project's target framework or frameworks. Il linguaggio C# può infatti includere funzionalità che si basano su tipi o componenti di runtime che non sono disponibili in ogni implementazione .NET.This is because the C# language may have features that rely on types or runtime components that are not available in every .NET implementation. Ciò garantisce anche che, per qualsiasi framework di destinazione del progetto, si otterrà per impostazione predefinita la versione del linguaggio maggiormente compatibile.This also ensures that for whatever target your project is built against, you get the highest compatible language version by default.

attivitàDefaults

Il compilatore determina un'impostazione predefinita in base a queste regole:The compiler determines a default based on these rules:

Framework di destinazioneTarget framework versionversion Impostazione predefinita della versione del linguaggio C#C# language version default
.NET Core.NET Core 3.x3.x C# 8.0C# 8.0
.NET Core.NET Core 2.x2.x C# 7.3C# 7.3
.NET Standard.NET Standard tuttiall C# 7.3C# 7.3
.NET Framework.NET Framework tuttiall C# 7.3C# 7.3

Impostazione predefinita per le anteprimeDefault for previews

Quando il progetto ha come destinazione un framework in anteprima con una versione del linguaggio in anteprima corrispondente, la versione del linguaggio usata è la versione del linguaggio in anteprima.When your project targets a preview framework that has a corresponding preview language version, the language version used is the preview language version. In questo modo, sarà possibile usare le funzionalità più recenti che sicuramente funzioneranno con l'anteprima in qualsiasi ambiente senza alcun effetto sui progetti che hanno come destinazione una versione rilasciata di .NET Core.This ensures that you can use the latest features that are guaranteed to work with that preview in any environment without affecting your projects that target a released .NET Core version.

Sostituzione di un'impostazione predefinitaOverriding a default

Se è necessario specificare in modo esplicito la versione di C#, è possibile farlo in diversi modi:If you must specify your C# version explicitly, you can do so in several ways:

Modificare il file di progettoEdit the project file

È possibile impostare la versione del linguaggio nel file di progetto.You can set the language version in your project file. Se, ad esempio, si vuole esplicitamente l'accesso alle funzionalità di anteprima, è possibile aggiungere un elemento simile a questo:For example, if you explicitly wanted access to preview features, you could do add an element like this:

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

Il valore preview usa il linguaggio C# in anteprima disponibile più recente supportato dal compilatore.The value preview uses the latest available preview C# language that your compiler supports.

Configurare più progettiConfigure multiple projects

È possibile creare un file Directory.build.props che contiene l'elemento <LangVersion> per configurare più directory.You can create a Directory.Build.props file that contains the <LangVersion> element to configure multiple directories. Questa operazione viene in genere eseguita nella directory della soluzione.You typically do that in your solution directory. Aggiungere il codice seguente a un file Directory.Build.props nella directory della soluzione:Add the following to a Directory.Build.props file in your solution directory:

<Project>
 <PropertyGroup>
   <LangVersion>preview</LangVersion>
 </PropertyGroup>
</Project>

Ora le build presenti in ogni sottodirectory della directory contenente il file useranno la versione di C# in anteprima.Now, builds in every subdirectory of the directory containing that file will use the preview C# version. Per altre informazioni, vedere l'articolo Personalizzare la compilazione.For more information, see the article on Customize your build.

Informazioni di riferimento sulle versioni del linguaggio C#C# language version reference

La tabella seguente illustra tutte le versioni del linguaggio C# correnti.The following table shows all current C# language versions. Il compilatore in uso potrebbe non riconoscere necessariamente ogni valore, se è antecedente.Your compiler may not necessarily understand every value if it is older. Se si installa .NET Core 3.0, si avrà accesso a tutti gli elementi elencati.If you install .NET Core 3.0, then you will have access to everything listed.

ValueValue SignificatoMeaning
previewpreview Il compilatore accetta tutte le sintassi di linguaggio valide dalla versione di anteprima più recente.The compiler accepts all valid language syntax from the latest preview version.
latestlatest Il compilatore accetta la sintassi dalla versione rilasciata più recente del compilatore (inclusa la versione secondaria).The compiler accepts syntax from the latest released version of the compiler (including minor version).
latestMajorlatestMajor Il compilatore accetta la sintassi dalla versione principale più recente rilasciata del compilatore.The compiler accepts syntax from the latest released major version of the compiler.
8.08.0 Il compilatore accetta solo la sintassi inclusa in C# 8.0 o versione precedente.The compiler accepts only syntax that is included in C# 8.0 or lower.
7.37.3 Il compilatore accetta solo la sintassi inclusa in C# 7.3 o versione precedente.The compiler accepts only syntax that is included in C# 7.3 or lower.
7.27.2 Il compilatore accetta solo la sintassi inclusa in C# 7.2 o versione precedente.The compiler accepts only syntax that is included in C# 7.2 or lower.
7.17.1 Il compilatore accetta solo la sintassi inclusa in C# 7.1 o versione precedente.The compiler accepts only syntax that is included in C# 7.1 or lower.
77 Il compilatore accetta solo la sintassi inclusa in C# 7.0 o versione precedente.The compiler accepts only syntax that is included in C# 7.0 or lower.
66 Il compilatore accetta solo la sintassi inclusa in C# 6.0 o versione precedente.The compiler accepts only syntax that is included in C# 6.0 or lower.
55 Il compilatore accetta solo la sintassi inclusa in C# 5.0 o versione precedente.The compiler accepts only syntax that is included in C# 5.0 or lower.
44 Il compilatore accetta solo la sintassi inclusa in C# 4.0 o versione precedente.The compiler accepts only syntax that is included in C# 4.0 or lower.
33 Il compilatore accetta solo la sintassi inclusa in C# 3.0 o versione precedente.The compiler accepts only syntax that is included in C# 3.0 or lower.
ISO-2ISO-2 Il compilatore accetta solo la sintassi inclusa nella specifica ISO/IEC 23270:2006 C# (2.0)The compiler accepts only syntax that is included in ISO/IEC 23270:2006 C# (2.0)
ISO-1ISO-1 Il compilatore accetta solo la sintassi inclusa nella specifica ISO/IEC 23270:2003 C# (1.0/1.2)The compiler accepts only syntax that is included in ISO/IEC 23270:2003 C# (1.0/1.2)