Versão da linguagem C#

O compilador C# mais recente determina uma versão de idioma padrão com base na estrutura ou estruturas de destino do seu projeto. O Visual Studio não fornece uma interface do usuário para alterar o valor, mas você pode alterá-la 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 linguísticos mais recentes compatíveis com o objetivo do seu projeto. Essa opção padrão também garante que você não use uma linguagem que exija tipos ou comportamento de tempo de execução não disponíveis em sua estrutura de destino. Escolher uma versão de idioma mais recente do que o padrão pode causar erros difíceis de diagnosticar em tempo de compilação e tempo de execução.

O C# 12 é suportado apenas no .NET 8 e versões mais recentes. O C# 11 é suportado apenas no .NET 7 e versões mais recentes. C# 10 é suportado apenas no .NET 6 e versões mais recentes.

Verifique a página de compatibilidade da plataforma Visual Studio para obter detalhes sobre quais versões do .NET são suportadas por versões do Visual Studio. Verifique a página de compatibilidade da plataforma Visual Studio para Mac para obter detalhes sobre quais versões do .NET são suportadas por versões do Visual Studio para Mac. Verifique a página Mono para C# para compatibilidade Mono com versões C#.

Defaults

O compilador determina um padrão com base nestas regras:

Destino Versão Padrão da versão do idioma C#
.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 todos C# 7,3

Se o seu projeto visa uma preview estrutura que tem uma versão de idioma de visualização correspondente, a versão de idioma usada é a versão de idioma de visualização. Você usa os recursos mais recentes com essa visualização em qualquer ambiente, sem afetar os projetos destinados a uma versão lançada do .NET Core.

Importante

O novo modelo de projeto para Visual Studio 2017 adicionou uma <LangVersion>latest</LangVersion> entrada para novos arquivos de projeto. Se você atualizar a estrutura de destino para esses projetos, a <LangVersion> configuração poderá substituir o padrão para a nova estrutura de destino. Certifique-se de remover o <LangVersion>latest</LangVersion> do arquivo de projeto para garantir que seu projeto use a versão recomendada do compilador para sua estrutura de destino. Você pode atualizar a estrutura de destino para acessar recursos de idioma mais recentes.

Substituir o padrão

Se você precisar especificar sua versão do C# explicitamente, poderá fazê-lo de várias maneiras:

Gorjeta

Você pode ver a versão do idioma no Visual Studio na página de propriedades do projeto. Na guia Compilar, o painel Avançado exibe a versão selecionada.

Para saber qual versão de idioma você está usando no momento, coloque #error version (diferencia maiúsculas de minúsculas) em seu código. Isso faz com que o compilador relate um erro do compilador, CS8304, com uma mensagem contendo a versão do compilador que está sendo usada e a versão atual do idioma selecionado. Consulte #error (Referência C#) para obter mais informações.

Editar o arquivo de projeto

Pode definir a versão linguística no ficheiro de projeto. Por exemplo, se você quiser explicitamente acessar os recursos de visualização, adicione um elemento como este:

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

O valor preview usa a versão de linguagem C# de visualização mais recente disponível que seu compilador suporta.

Configurar vários projetos

Para configurar vários projetos, você pode criar um arquivo Directory.Build.props, normalmente no diretório da solução, que contém o <LangVersion> elemento . Adicione a seguinte configuração ao arquivo Directory.Build.props :

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

As compilações em todos os subdiretórios do diretório que contém esse arquivo agora usam a versão C# de visualização. Para obter mais informações, consulte Personalizar sua compilação.

Referência da versão da linguagem C#

A tabela a seguir mostra todas as versões atuais do idioma C#. Os compiladores mais antigos podem não entender todos os valores. Se você instalar o SDK .NET mais recente, terá acesso a tudo o que está listado.

Value Significado
preview O compilador aceita toda a sintaxe de idioma válida da versão de visualização mais recente.
latest O compilador aceita sintaxe da última versão lançada do compilador (incluindo a versão secundária).
latestMajor
ou default
O compilador aceita a sintaxe da última versão principal do compilador.
12.0 O compilador aceita apenas a sintaxe incluída no C# 12 ou inferior.
11.0 O compilador aceita apenas a sintaxe incluída no C# 11 ou inferior.
10.0 O compilador aceita apenas a sintaxe incluída no C# 10 ou inferior.
9.0 O compilador aceita apenas a sintaxe incluída no C# 9 ou inferior.
8.0 O compilador aceita apenas a sintaxe incluída no C# 8.0 ou inferior.
7.3 O compilador aceita apenas a sintaxe incluída no C# 7.3 ou inferior.
7.2 O compilador aceita apenas a sintaxe incluída no C# 7.2 ou inferior.
7.1 O compilador aceita apenas a sintaxe incluída no C# 7.1 ou inferior.
7 O compilador aceita apenas a sintaxe incluída no C# 7.0 ou inferior.
6 O compilador aceita apenas a sintaxe incluída no C# 6.0 ou inferior.
5 O compilador aceita apenas a sintaxe incluída no C# 5.0 ou inferior.
4 O compilador aceita apenas a sintaxe incluída no C# 4.0 ou inferior.
3 O compilador aceita apenas a sintaxe incluída no C# 3.0 ou inferior.
ISO-2
ou 2
O compilador aceita apenas a sintaxe incluída na ISO/IEC 23270:2006 C# (2.0).
ISO-1
ou 1
O compilador aceita apenas a sintaxe incluída na ISO/IEC 23270:2003 C# (1.0/1.2).

Nota

Especificar LangVersion com o default valor é diferente de omitir a opção LangVersion. A especificação default usa a versão mais recente da linguagem suportada pelo compilador, sem levar em conta a estrutura de destino. Por exemplo, a criação de um projeto destinado ao .NET 6 a partir da versão atual do Visual Studio 2022 usa C# 10 se LangVersion não for especificado, mas usa C# 12 se LangVersion estiver definido como default.