C#-nyelv verziószámozása

A legújabb C#-fordító a projekt cél-keretrendszere vagy keretrendszerei alapján határozza meg az alapértelmezett nyelvi verziót. A Visual Studio nem biztosít felhasználói felületet az érték módosításához, de a csproj fájl szerkesztésével módosíthatja. Az alapértelmezett beállítás biztosítja, hogy a cél-keretrendszerrel kompatibilis legújabb nyelvi verziót használja. A projekt céljával kompatibilis legújabb nyelvi funkciókhoz férhet hozzá. Ez az alapértelmezett beállítás azt is biztosítja, hogy ne használjon olyan nyelvet, amely olyan típusokat vagy futtatókörnyezeti viselkedést igényel, amelyek nem érhetők el a cél-keretrendszerben. Ha az alapértelmezettnél újabb nyelvi verziót választ, nehéz diagnosztizálni a fordítási és futásidejű hibákat.

A C# 12 csak .NET 8 és újabb verziók esetén támogatott. A C# 11 csak .NET 7 és újabb verziók esetén támogatott. A C# 10 csak .NET 6 és újabb verziók esetén támogatott.

A Visual Studio platformkompatibilitási oldalán talál részleteket, amelyeken a Visual Studio verziói támogatják a .NET-verziókat. A Mac Visual Studio platformkompatibilitási oldalán talál részleteket, amelyeken a Mac Visual Studio verziói támogatják a .NET-verziókat. Ellenőrizze a Mono oldalt, hogy a C# kompatibilis-e a C# -verziókkal.

Defaults

A fordító az alábbi szabályok alapján határozza meg az alapértelmezett értéket:

Cél Verzió A C#-nyelv alapértelmezett verziója
.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-keretrendszer mind C# 7.3

Ha a projekt egy megfelelő előzetes verziójú keretrendszert preview céloz meg, a használt nyelvi verzió az előzetes verzió. A legújabb funkciókat bármilyen környezetben használhatja az előzetes verzióval, anélkül, hogy befolyásolná a kiadott .NET Core-verziót megcélzó projekteket.

Fontos

A Visual Studio 2017 új projektsablonja hozzáadott egy bejegyzést <LangVersion>latest</LangVersion> az új projektfájlokhoz. Ha frissíti ezeknek a projekteknek a cél keretrendszerét, a <LangVersion> beállítás felülírhatja az új cél keretrendszer alapértelmezett beállításait. Mindenképpen távolítsa el a <LangVersion>latest</LangVersion> projektfájlból, hogy a projekt a cél-keretrendszerhez ajánlott fordítóverziót használja. A cél keretrendszert frissítheti az újabb nyelvi funkciók eléréséhez.

Az alapértelmezett felülbírálás

Ha explicit módon kell megadnia a C#-verziót, ezt többféleképpen is megteheti:

Tipp.

A nyelvi verzió a Visual Studióban a projekttulajdonságok oldalán látható. A Build lap Speciális paneljén megjelenik a kiválasztott verzió.

Ha tudni szeretné, hogy milyen nyelvi verziót használ, helyezze el #error version (a kis- és nagybetűk megkülönböztetése) a kódban. Ez a fordítói jelentést cs8304-es fordítói hibává teszi, amely a használt fordítóverziót és az aktuálisan kiválasztott nyelvi verziót tartalmazza. További információt a #error (C#-referencia) című témakörben talál.

A projektfájl szerkesztése

A nyelvi verziót a projektfájlban állíthatja be. Ha például kifejezetten hozzá szeretne férni az előzetes verziójú funkciókhoz, adjon hozzá egy ehhez hasonló elemet:

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

Az érték preview a fordító által támogatott legújabb előzetes verziójú C# nyelvi verziót használja.

Több projekt konfigurálása

Több projekt konfigurálásához létrehozhat egy Directory.Build.props fájlt, amely általában a megoldáskönyvtárban található, és tartalmazza az <LangVersion> elemet. Adja hozzá a következő beállítást a Directory.Build.props fájlhoz :

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

A fájlt tartalmazó könyvtár összes alkönyvtárában már az előzetes verziójú C# verziót használja. További információ: A build testreszabása.

C# nyelvi verzióra vonatkozó referencia

Az alábbi táblázat az összes aktuális C#-nyelvi verziót tartalmazza. Előfordulhat, hogy a régebbi fordítók nem értenek minden értéket. Ha a legújabb .NET SDK-t telepíti, a felsoroltakhoz minden hozzáférése van.

Érték Értelmezés
preview A fordító a legújabb előzetes verzió összes érvényes nyelvszintaxisát elfogadja.
latest A fordító elfogadja a fordító legújabb kiadású verziójának szintaxisát (beleértve az alverziót is).
latestMajor
vagy default
A fordító elfogadja a fordító legújabb főverziójának szintaxisát.
12.0 A fordító csak a C# 12 vagy annál alacsonyabb szintaxist fogadja el.
11.0 A fordító csak a C# 11 vagy annál alacsonyabb szintaxist fogadja el.
10.0 A fordító csak a C# 10 vagy annál alacsonyabb szintaxist fogadja el.
9.0 A fordító csak a C# 9 vagy annál alacsonyabb szintaxist fogadja el.
8.0 A fordító csak a C# 8.0 vagy annál alacsonyabb szintaxist fogadja el.
7.3 A fordító csak a C# 7.3 vagy annál alacsonyabb szintaxist fogadja el.
7.2 A fordító csak a C# 7.2-ben vagy annál alacsonyabb szintaxist fogadja el.
7.1 A fordító csak a C# 7.1 vagy annál alacsonyabb szintaxist fogadja el.
7 A fordító csak a C# 7.0-s vagy újabb verziójában szereplő szintaxist fogadja el.
6 A fordító csak a C# 6.0 vagy annál alacsonyabb szintaxist fogadja el.
5 A fordító csak a C# 5.0-s vagy újabb verziójában szereplő szintaxist fogadja el.
4 A fordító csak a C# 4.0-s vagy újabb verziójában szereplő szintaxist fogadja el.
3 A fordító csak a C# 3.0-s vagy újabb verziójában szereplő szintaxist fogadja el.
ISO-2
vagy 2
A fordító csak az ISO/IEC 23270:2006 C# (2.0) szabványban foglalt szintaxist fogadja el.
ISO-1
vagy 1
A fordító csak az ISO/IEC 23270:2003 C# (1.0/1.2) szabványban foglalt szintaxist fogadja el.

Feljegyzés

A LangVersion értékének default megadása eltér a LangVersion beállítás kihagyásától. A beállítás default a fordító által támogatott nyelv legújabb verzióját használja, a cél-keretrendszer figyelembe vétele nélkül. Ha például a Visual Studio 2022 jelenlegi verziójából a .NET 6-ot célozza meg, akkor a C# 10-et használja, ha a LangVersion nincs megadva, de a C# 12-t használja, ha a LangVersion értéke default.