C#przechowywanie wersji językaC# language versioning

Najnowszy C# kompilator Określa domyślną wersję językową opartą na docelowej platformie lub strukturach projektu.The latest C# compiler determines a default language version based on your project's target framework or frameworks. Jest to spowodowane tym C# , że język może mieć funkcje, które są zależne od typów lub składników środowiska uruchomieniowego, które nie są dostępne w każdej implementacji platformy .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. Zapewnia to również, że dla każdego elementu docelowego projektu jest tworzona z myślą o największej zgodnej wersji językowej.This also ensures that for whatever target your project is built against, you get the highest compatible language version by default.

Reguły w tym artykule mają zastosowanie do kompilatora dostarczonego z programem Visual Studio 2019 lub zestawem SDK programu .NET Core 3,0.The rules in this article apply to the compiler delivered with Visual Studio 2019, or the .NET Core 3.0 SDK. C# Kompilatory, które są częścią instalacji programu Visual Studio 2017 lub starszej wersji zestaw .NET Core SDK C# wersje Target 7,0 domyślnie.The C# compilers that are part of the Visual Studio 2017 installation or earlier .NET Core SDK versions target C# 7.0 by default.

Wartość domyślnaDefaults

Kompilator określa wartość domyślną na podstawie następujących reguł:The compiler determines a default based on these rules:

Platforma docelowaTarget framework versionversion C#domyślna wersja językaC# language version default
.NET Core.NET Core wersji3.x C# 8.0C# 8.0
.NET Core.NET Core 2.x2.x C# 7.3C# 7.3
.NET Standard.NET Standard 2,12.1 C# 8.0C# 8.0
.NET Standard.NET Standard 2.02.0 C# 7.3C# 7.3
.NET Standard.NET Standard 1.x1.x C# 7.3C# 7.3
.NET Framework.NET Framework wszystkieall C# 7.3C# 7.3

Domyślnie dla wersji zapoznawczychDefault for previews

Jeśli projekt jest przeznaczony dla platformy wersji zapoznawczej, która ma odpowiednią wersję języka wersji zapoznawczej, używana jest wersja języka w wersji zapoznawczej.When your project targets a preview framework that has a corresponding preview language version, the language version used is the preview language version. Dzięki temu można korzystać z najnowszych funkcji, które są gwarantowane do pracy z tą wersją zapoznawczą w dowolnym środowisku bez wpływu na projekty przeznaczone dla wydanej wersji platformy .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.

Zastąp wartość domyślnąOverride a default

Jeśli musisz określić C# wersję jawnie, możesz to zrobić na kilka sposobów:If you must specify your C# version explicitly, you can do so in several ways:

Edytuj plik projektuEdit the project file

Możesz ustawić wersję językową w pliku projektu.You can set the language version in your project file. Jeśli na przykład jawnie chcesz uzyskać dostęp do funkcji w wersji zapoznawczej, Dodaj element podobny do tego:For example, if you explicitly want access to preview features, add an element like this:

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

Wartość preview używa najnowszej dostępnej wersji C# językowej, która obsługuje kompilator.The value preview uses the latest available preview C# language version that your compiler supports.

Konfigurowanie wielu projektówConfigure multiple projects

Można utworzyć plik Directory. Build. props , który zawiera element <LangVersion>, aby skonfigurować wiele katalogów.You can create a Directory.Build.props file that contains the <LangVersion> element to configure multiple directories. Zwykle jest to wykonywane w katalogu rozwiązania.You typically do that in your solution directory. Dodaj następujący element do pliku Directory. Build. props w katalogu rozwiązania:Add the following to a Directory.Build.props file in your solution directory:

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

Teraz kompilacje w każdym podkatalogu katalogu zawierającego ten plik będą korzystać z wersji zapoznawczej C# .Now, builds in every subdirectory of the directory containing that file will use the preview C# version. Aby uzyskać więcej informacji, zobacz artykuł na temat dostosowywania kompilacji.For more information, see the article on Customize your build.

C#dokumentacja wersji językaC# language version reference

W poniższej tabeli przedstawiono wszystkie bieżące C# wersje językowe.The following table shows all current C# language versions. Kompilator może niekoniecznie zrozumieć każdą wartość, jeśli jest starszy.Your compiler may not necessarily understand every value if it is older. Jeśli zainstalujesz program .NET Core 3,0, będziesz mieć dostęp do wszystkich elementów na liście.If you install .NET Core 3.0, then you will have access to everything listed.

WartośćValue ZnaczenieMeaning
Przeglądaniapreview Kompilator akceptuje całą poprawną składnię języka od najnowszej wersji zapoznawczej.The compiler accepts all valid language syntax from the latest preview version.
Ostatnialatest Kompilator akceptuje składnię z najnowszej wydanej wersji kompilatora (w tym wersji pomocniczej).The compiler accepts syntax from the latest released version of the compiler (including minor version).
latestMajorlatestMajor Kompilator akceptuje składnię z najnowszej wydanej wersji głównej kompilatora.The compiler accepts syntax from the latest released major version of the compiler.
8.08.0 Kompilator akceptuje tylko składnię, która jest uwzględniona w C# 8,0 lub niższej.The compiler accepts only syntax that is included in C# 8.0 or lower.
7,37.3 Kompilator akceptuje tylko składnię, która jest uwzględniona w C# 7,3 lub niższej.The compiler accepts only syntax that is included in C# 7.3 or lower.
7,27.2 Kompilator akceptuje tylko składnię, która jest uwzględniona w C# 7,2 lub niższej.The compiler accepts only syntax that is included in C# 7.2 or lower.
7,17.1 Kompilator akceptuje tylko składnię, która jest uwzględniona w C# 7,1 lub niższej.The compiler accepts only syntax that is included in C# 7.1 or lower.
77 Kompilator akceptuje tylko składnię, która jest uwzględniona w C# 7,0 lub niższej.The compiler accepts only syntax that is included in C# 7.0 or lower.
66 Kompilator akceptuje tylko składnię, która jest uwzględniona w C# 6,0 lub niższej.The compiler accepts only syntax that is included in C# 6.0 or lower.
55 Kompilator akceptuje tylko składnię, która jest uwzględniona w C# 5,0 lub niższej.The compiler accepts only syntax that is included in C# 5.0 or lower.
44 Kompilator akceptuje tylko składnię, która jest uwzględniona w C# 4,0 lub niższej.The compiler accepts only syntax that is included in C# 4.0 or lower.
33 Kompilator akceptuje tylko składnię, która jest uwzględniona w C# 3,0 lub niższej.The compiler accepts only syntax that is included in C# 3.0 or lower.
ISO-2ISO-2 Kompilator akceptuje tylko składnię zawartą w 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 Kompilator akceptuje tylko składnię zawartą w 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)