Controle de versão da linguagem C#
O compilador do C# mais recente determina uma versão da linguagem padrão com base nas estruturas de destino do projeto. O Visual Studio não fornece uma interface do usuário para alterar o valor, mas você pode alterá-lo editando o arquivo csproj. A escolha do padrão garante que você use a versão de idioma mais recente compatível com sua estrutura de destino. Você se beneficia do acesso aos recursos de linguagem mais recentes compatíveis com o destino do projeto. Essa opção padrão também garante que você não use uma linguagem que exija tipos ou comportamento de runtime não disponível em sua estrutura de destino. Escolher uma versão de idioma mais recente do que o padrão pode causar erros de tempo de compilação e de runtime difíceis de diagnosticar.
O C# 13 tem suporte apenas no .NET 9 e em versões mais recentes. O C# 12 tem suporte apenas no .NET 8 e em versões mais recentes. O C# 11 tem suporte apenas no .NET 7 e em versões mais recentes. O uso de uma versão da linguagem C# mais recente que a versão associada ao TFM de destino não tem suporte.
Verifique a página de compatibilidade da plataforma do Visual Studio para obter detalhes sobre quais versões do .NET têm suporte por versões do Visual Studio. Verifique a página do Mono para o C# a respeito da compatibilidade do Mono com versões C#.
Padrões
O compilador determina um padrão com base nestas regras:
Destino | Versão | Padrão da versão da linguagem 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 |
Se seu projeto tiver como destino uma estrutura preview
que tenha uma versão prévia da linguagem correspondente, a versão da linguagem usada será a versão prévia da linguagem. Você usa os recursos mais recentes com essa versão prévia em qualquer ambiente, sem afetar projetos destinados a uma versão lançada do .NET Core.
Referência à versão da linguagem C#
A tabela a seguir mostra todas as versões atuais da linguagem C#. Os compiladores mais antigos podem não entender todos os valores. Se você instalar o SDK do .NET mais recente, terá acesso a tudo o que está listado.
Valor | Significado |
---|---|
preview |
O compilador aceita todas as sintaxes de linguagem válidas da versão prévia mais recente. |
latest |
O compilador aceita a sintaxe da versão lançada mais recente do compilador (incluindo a versão secundária). |
latestMajor ou default |
O compilador aceita a sintaxe da versão principal mais recente lançada do compilador. |
13.0 |
O compilador aceita somente a sintaxe incluída no C# 13 ou inferior. |
12.0 |
O compilador aceita somente a sintaxe incluída no C# 12 ou versão inferior. |
11.0 |
O compilador aceita somente a sintaxe incluída no C# 11 ou inferior. |
10.0 |
O compilador aceita somente a sintaxe incluída no C# 10 ou inferior. |
9.0 |
O compilador aceita somente a sintaxe incluída no C# 9 ou inferior. |
8.0 |
O compilador aceita somente a sintaxe incluída no C# 8.0 ou inferior. |
7.3 |
O compilador aceita somente a sintaxe incluída no C# 7.3 ou inferior. |
7.2 |
O compilador aceita somente a sintaxe incluída no C# 7.2 ou inferior. |
7.1 |
O compilador aceita somente a sintaxe incluída no C# 7.1 ou inferior. |
7 |
O compilador aceita somente a sintaxe incluída no C# 7.0 ou inferior. |
6 |
O compilador aceita somente a sintaxe incluída no C# 6.0 ou inferior. |
5 |
O compilador aceita somente a sintaxe incluída no C# 5.0 ou inferior. |
4 |
O compilador aceita somente a sintaxe incluída no C# 4.0 ou inferior. |
3 |
O compilador aceita somente a sintaxe incluída no C# 3.0 ou inferior. |
ISO-2 ou 2 |
O compilador aceita somente a sintaxe incluída no ISO/IEC 23270:2006 C# (2.0). |
ISO-1 ou 1 |
O compilador aceita somente a sintaxe incluída no ISO/IEC 23270:2003 C# (1.0/1.2). |
Observação
Especificar LangVersion com o valor default
é diferente de omitir a opção LangVersion. A especificação de default
usa a versão mais recente da linguagem com suporte do compilador, sem levar em conta a estrutura de destino. Por exemplo, a criação de um projeto que tenha como destino o .NET 6 a partir da versão atual do Visual Studio 2022 usará o C# 10 se LangVersion não for especificado, mas usará o C# 12 se LangVersion estiver definido como default
.