Управление версиями языка C#

Компилятор C# последней версии определяет версию языка по умолчанию на основе целевой платформы или платформ проекта. Visual Studio не предоставляет пользовательский интерфейс для изменения этого значения, но его можно изменить, отредактировав файл CSPROJ. Выбор значения по умолчанию гарантирует, что вы используете последнюю версию языка, совместимую с вашей целевой платформой. Вы получите преимущество в виде доступа к последним функциям языка, совместимым с целевым объектом проекта. Этот вариант по умолчанию также гарантирует, что вы не будете использовать язык, который требует такие типы или поведение во время выполнения, которые недоступны в целевой платформе. Выбор более новой версии языка, чем значение по умолчанию, может усложнить диагностику ошибок во время компиляции и выполнения.

C# 13 поддерживается только в .NET 9 и более новых версиях. C# 12 поддерживается только в .NET 8 и более новых версиях. C# 11 поддерживается только в .NET 7 и более новых версиях.

Проверьте страницу совместимости платформы Visual Studio, чтобы узнать, какие версии .NET поддерживаются версиями Visual Studio. Проверьте страницу Mono для C# для совместимости Mono с версиями C# .

Defaults

Компилятор определяет значение по умолчанию на основе следующих правил:

Назначение Версия Версия языка C# по умолчанию
.NET 9.x C# 13
.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 all C# 7.3

Если проект предназначен для preview платформы с соответствующей версией языка предварительной версии, используется языковая версия предварительной версии. Вы можете использовать новейшие возможности в этой предварительной версии в любой среде, не затрагивая проекты, предназначенные для выпущенной версии .NET Core.

Справочник по версиям языка C#

В следующей таблице показаны все текущие версии языка C#. Старые компиляторы могут не понимать каждое значение. Если установить последний пакет SDK для .NET, у вас есть доступ ко всем перечисленным.

Значение Значение
preview Компилятор допускает использование любого допустимого синтаксиса языка из последней предварительной версии.
latest Компилятор принимает синтаксис из последней выпущенной версии компилятора (включая дополнительный номер версии).
latestMajor
или default
Компилятор принимает синтаксис из последней основной версии компилятора.
13.0 Компилятор принимает только синтаксис, включенный в C# 13 или более поздней версии.
12.0 Компилятор принимает только синтаксис, включенный в C# 12 или ниже.
11.0 Компилятор принимает только синтаксис, включенный в C# 11 или ниже.
10.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 10 или более ранних версий.
9.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 9 или более ранних версий.
8.0 Компилятор принимает только синтаксис, включенный в спецификацию C# 8.0 или более ранней версии.
7.3 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.3 или более ранней версии.
7.2 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.2 или более ранней версии.
7.1 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.1 или более ранней версии.
7 Компилятор принимает только синтаксис, включенный в спецификацию C# 7.0 или более ранней версии.
6 Компилятор принимает только синтаксис, включенный в спецификацию C# 6.0 или более ранней версии.
5 Компилятор принимает только синтаксис, включенный в спецификацию C# 5.0 или более ранней версии.
4 Компилятор принимает только синтаксис, включенный в спецификацию C# 4.0 или более ранней версии.
3 Компилятор принимает только синтаксис, включенный в спецификацию C# 3.0 или более ранней версии.
ISO-2
или 2
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2006 C# (2.0).
ISO-1
или 1
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2003 C# (1.0/1.2).

Примечание.

Указание LangVersion со значением отличается от пропуска параметра LangVersion.default Указание default последней версии языка, который поддерживает компилятор, без учета целевой платформы. Например, создание проекта, предназначенного для .NET 6 из текущей версии Visual Studio 2022, использует C# 10, если LangVersion не указан, но использует C# 12, если LangVersion имеет значение default.