Verwaltung der C#-SprachversionC# language versioning

Der C#-Compiler bestimmt eine Standardsprachversion, die auf den Zielframeworks Ihres Projekts basiert.The latest C# compiler determines a default language version based on your project's target framework or frameworks. Der Grund dafür ist, dass die Sprache C# Features enthalten kann, die von Typen oder Laufzeitkomponenten abhängig sind, die nicht in allen .NET-Implementierungen verfügbar sind.This is because the C# language may have features that rely on types or runtime components that are not available in every .NET implementation. Damit wird sichergestellt, dass Sie die Sprachversion mit der höchsten Kompatibilität erhalten, ganz gleich, für welches Ziel Sie Ihr Projekt erstellen.This also ensures that for whatever target your project is built against, you get the highest compatible language version by default.

Die in diesem Artikel aufgeführten Regeln gelten für den Compiler, der im Lieferumfang von Visual Studio 2019 oder dem .NET Core 3.0 SDK enthalten ist.The rules in this article apply to the compiler delivered with Visual Studio 2019, or the .NET Core 3.0 SDK. Die C#-Compiler, die Teil der Visual Studio 2017-Installation oder von früheren .NET Core SDK-Versionen sind, sind standardmäßig auf C# 7.0 ausgerichtet.The C# compilers that are part of the Visual Studio 2017 installation or earlier .NET Core SDK versions target C# 7.0 by default.

StandardeinstellungenDefaults

Der Compiler bestimmt basierend auf den folgenden Regeln eine Standardversion:The compiler determines a default based on these rules:

ZielframeworkTarget framework versionversion C#-SprachversionsstandardC# 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 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 alleall C# 7.3C# 7.3

Standard für VorschauversionenDefault for previews

Wenn Ihr Projekt auf eine Vorschauframework abzielt, das eine entsprechende Vorschausprachversion besitzt, wird die Vorschausprachversion als Sprachversion verwendet.When your project targets a preview framework that has a corresponding preview language version, the language version used is the preview language version. Damit wird sichergestellt, dass Sie die neuesten Features verwenden können, die garantiert mit dieser Vorschauversion in jeder Umgebung funktionieren ohne Auswirkungen auf Ihre Projekte, die auf eine freigegebene .NET Core-Version abzielen.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.

Überschreiben eines StandardwertsOverride a default

Wenn Sie Ihre C#-Version explizit angeben müssen, haben Sie verschiedene Möglichkeiten:If you must specify your C# version explicitly, you can do so in several ways:

Bearbeiten der ProjektdateiEdit the project file

Sie können die Sprachversion in der Projektdatei festlegen.You can set the language version in your project file. Wenn Sie beispielsweise expliziten Zugriff auf Previewfunktionen wünschen, fügen Sie ein Element wie folgt hinzu:For example, if you explicitly want access to preview features, add an element like this:

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

Der Wert preview verwendet die neueste verfügbare Vorschauversion der Sprache C#, die Ihr Compiler unterstützt.The value preview uses the latest available preview C# language version that your compiler supports.

Konfigurieren mehrerer ProjekteConfigure multiple projects

Sie können eine Directory.Build.props-Datei erstellen, die das Element <LangVersion> enthält, um mehrere Verzeichnisse zu konfigurieren.You can create a Directory.Build.props file that contains the <LangVersion> element to configure multiple directories. In der Regel führen Sie dies im Projektmappenverzeichnis durch.You typically do that in your solution directory. Fügen Sie Folgendes in eine Directory.Build.props-Datei in Ihrem Projektmappenverzeichnis ein:Add the following to a Directory.Build.props file in your solution directory:

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

Nun verwenden alle Unterverzeichnisse des Verzeichnisses, das diese Datei enthält, die C#-Vorschauversion.Now, builds in every subdirectory of the directory containing that file will use the preview C# version. Weitere Informationen finden Sie im Artikel zum Anpassen Ihres Builds.For more information, see the article on Customize your build.

Referenz zur C#-SprachversionC# language version reference

In der folgenden Tabelle sind alle aktuellen C#-Sprachversionen enthalten.The following table shows all current C# language versions. Wenn Ihr Compiler älter ist, versteht er möglicherweise nicht alle Werte.Your compiler may not necessarily understand every value if it is older. Sie haben Zugriff auf alle aufgeführten Elemente, wenn Sie .NET Core 3.0 installieren.If you install .NET Core 3.0, then you will have access to everything listed.

WertValue BedeutungMeaning
previewpreview Der Compiler akzeptiert jede gültige Sprachsyntax der letzten Vorschauversion.The compiler accepts all valid language syntax from the latest preview version.
latestlatest Der Compiler akzeptiert die Syntax der neuesten veröffentlichte Version des Compilers (einschließlich Nebenversionen).The compiler accepts syntax from the latest released version of the compiler (including minor version).
latestMajorlatestMajor Der Compiler akzeptiert die Syntax der neuesten veröffentlichte Hauptversion des Compilers.The compiler accepts syntax from the latest released major version of the compiler.
8.08.0 Der Compiler akzeptiert nur Syntax, die in C# 8.0 oder niedriger enthalten ist.The compiler accepts only syntax that is included in C# 8.0 or lower.
7.37.3 Der Compiler akzeptiert nur Syntax, die in C# 7.3 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 7.3 or lower.
7.27.2 Der Compiler akzeptiert nur Syntax, die in C# 7.2 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 7.2 or lower.
7.17.1 Der Compiler akzeptiert nur Syntax, die in C# 7.1 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 7.1 or lower.
77 Der Compiler akzeptiert nur Syntax, die in C# 7.0 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 7.0 or lower.
66 Der Compiler akzeptiert nur Syntax, die in C# 6.0 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 6.0 or lower.
55 Der Compiler akzeptiert nur Syntax, die in C# 5.0 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 5.0 or lower.
44 Der Compiler akzeptiert nur Syntax, die in C# 4.0 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 4.0 or lower.
33 Der Compiler akzeptiert nur Syntax, die in C# 3.0 oder früher enthalten ist.The compiler accepts only syntax that is included in C# 3.0 or lower.
ISO-2ISO-2 Der Compiler akzeptiert nur Syntax, die in ISO/IEC 23270:2006 C# (2.0) enthalten ist.The compiler accepts only syntax that is included in ISO/IEC 23270:2006 C# (2.0)
ISO-1ISO-1 Der Compiler akzeptiert nur Syntax, die in ISO/IEC 23270:2003 C# (1.0/1.2) enthalten ist.The compiler accepts only syntax that is included in ISO/IEC 23270:2003 C# (1.0/1.2)