C#-språkversion

Den senaste C#-kompilatorn avgör en standardspråkversion baserat på projektets målramverk eller ramverk. Visual Studio tillhandahåller inget användargränssnitt för att ändra värdet, men du kan ändra det genom att redigera csproj-filen . Valet av standard säkerställer att du använder den senaste språkversionen som är kompatibel med ditt målramverk. Du får tillgång till de senaste språkfunktionerna som är kompatibla med projektets mål. Det här standardvalet säkerställer också att du inte använder ett språk som kräver typer eller körningsbeteende som inte är tillgängligt i målramverket. Om du väljer en språkversion som är nyare än standardvärdet kan det vara svårt att diagnostisera kompilerings- och körningsfel.

C# 12 stöds endast i .NET 8- och senare versioner. C# 11 stöds endast i .NET 7- och senare versioner. C# 10 stöds endast i .NET 6- och senare versioner.

Se kompatibilitetssidan för Visual Studio-plattformen för mer information om vilka .NET-versioner som stöds av versioner av Visual Studio. Mer information om vilka .NET-versioner som stöds av versioner av Visual Studio för Mac finns på visual studio för Mac-plattformens kompatibilitetssida. Kontrollera monosidan för C# för Monokompatibilitet med C#-versioner.

Defaults

Kompilatorn fastställer ett standardvärde baserat på dessa regler:

Mål Version Standard för C#-språkversion
.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 alla C# 7.3

Om ditt projekt riktar in sig på ett preview ramverk som har en motsvarande version av förhandsversionen är den språkversion som används förhandsgranskningsspråket. Du använder de senaste funktionerna med den förhandsversionen i alla miljöer, utan att påverka projekt som är inriktade på en utgiven .NET Core-version.

Viktigt!

Den nya projektmallen för Visual Studio 2017 lade till en <LangVersion>latest</LangVersion> post i nya projektfiler. Om du uppgraderar målramverket för dessa projekt <LangVersion> kan inställningen åsidosätta standardvärdet för det nya målramverket. Se till att ta bort <LangVersion>latest</LangVersion> från projektfilen för att säkerställa att projektet använder den rekommenderade kompilatorversionen för målramverket. Du kan uppdatera målramverket för att få åtkomst till nyare språkfunktioner.

Åsidosätt standardvärdet

Om du måste ange C#-versionen explicit kan du göra det på flera sätt:

Dricks

Du kan se språkversionen i Visual Studio på sidan projektegenskaper. Under fliken Skapa visar fönstret Avancerat den valda versionen.

Om du vill veta vilken språkversion du använder för närvarande lägger #error version du (skiftlägeskänslig) i koden. Detta gör kompilatorrapporten till ett kompilatorfel, CS8304, med ett meddelande som innehåller den kompilatorversion som används och den aktuella valda språkversionen. Mer information finns i #error (C#-referens ).

Redigera projektfilen

Du kan ange språkversionen i projektfilen. Om du till exempel uttryckligen vill ha åtkomst till förhandsversionsfunktioner lägger du till ett element som det här:

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

Värdet preview använder den senaste tillgängliga C#-språkversionen för förhandsversion som kompilatorn stöder.

Konfigurera flera projekt

Om du vill konfigurera flera projekt kan du skapa en Directory.Build.props-fil , vanligtvis i din lösningskatalog, som innehåller elementet <LangVersion> . Lägg till följande inställning i filen Directory.Build.props :

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

Versioner i alla underkataloger i katalogen som innehåller filen använder nu förhandsversionen av C#. Mer information finns i Anpassa din version.

Referens för C#-språkversion

I följande tabell visas alla aktuella C#-språkversioner. Äldre kompilatorer kanske inte förstår varje värde. Om du installerar den senaste .NET SDK:en har du åtkomst till allt som visas.

Värde Innebörd
preview Kompilatorn accepterar alla giltiga språksyntaxer från den senaste förhandsversionen.
latest Kompilatorn accepterar syntax från den senaste versionen av kompilatorn (inklusive delversion).
latestMajor
eller default
Kompilatorn accepterar syntax från den senaste versionen av huvudversionen av kompilatorn.
12.0 Kompilatorn accepterar endast syntax som ingår i C# 12 eller lägre.
11.0 Kompilatorn accepterar endast syntax som ingår i C# 11 eller lägre.
10.0 Kompilatorn accepterar endast syntax som ingår i C# 10 eller lägre.
9.0 Kompilatorn accepterar endast syntax som ingår i C# 9 eller lägre.
8.0 Kompilatorn accepterar endast syntax som ingår i C# 8.0 eller lägre.
7.3 Kompilatorn accepterar endast syntax som ingår i C# 7.3 eller lägre.
7.2 Kompilatorn accepterar endast syntax som ingår i C# 7.2 eller lägre.
7.1 Kompilatorn accepterar endast syntax som ingår i C# 7.1 eller lägre.
7 Kompilatorn accepterar endast syntax som ingår i C# 7.0 eller lägre.
6 Kompilatorn accepterar endast syntax som ingår i C# 6.0 eller lägre.
5 Kompilatorn accepterar endast syntax som ingår i C# 5.0 eller lägre.
4 Kompilatorn accepterar endast syntax som ingår i C# 4.0 eller lägre.
3 Kompilatorn accepterar endast syntax som ingår i C# 3.0 eller lägre.
ISO-2
eller 2
Kompilatorn accepterar endast syntax som ingår i ISO/IEC 23270:2006 C# (2.0).
ISO-1
eller 1
Kompilatorn accepterar endast syntax som ingår i ISO/IEC 23270:2003 C# (1.0/1.2).

Kommentar

Att ange LangVersion med default värdet skiljer sig från att utelämna alternativet LangVersion . När du anger default används den senaste versionen av språket som kompilatorn stöder, utan att ta hänsyn till målramverket. Om du till exempel skapar ett projekt som riktar sig mot .NET 6 från den aktuella versionen av Visual Studio 2022 används C# 10 om LangVersion inte har angetts, men använder C# 12 om LangVersion är inställt på default.