Referência de C#

Esta seção fornece o material de referência sobre palavras-chave do C#, operadores, caracteres especiais, diretivas de pré-processador, opções de compilador e erros de compilador e avisos.

Nesta seção

Palavras-chave do C#
Fornece links para informações sobre a sintaxe e as palavras-chave do C#.

Operadores do C#
Fornece links para informações sobre a sintaxe e os operadores do C#.

Caracteres especiais de C#
Fornece links para informações sobre caracteres especiais contextuais em C# e seu uso.

Diretivas do pré-processador do C#
Fornece links para informações sobre os comandos do compilador para inserir no código-fonte do C#.

Opções do compilador de C#
Inclui informações sobre as opções do compilador e como usá-las.

Erros do Compilador do C#
Inclui snippets de código que demonstram a causa e a correção de erros do compilador do C# e avisos.

C# Language Specification (Especificação da linguagem C#)
Especificação de linguagem do C# 6.0. Este é um projeto de proposta da linguagem C# 6.0. Este documento será refinado por meio do trabalho com o comitê de padrões ECMA C#. A versão 5.0 foi lançada em dezembro de 2017 como o documento Padrão ECMA-334 – 5ª Edição.

Os recursos que foram implementados nas versões do C# depois da 6.0 são representados em propostas de especificação de linguagem. Esses documentos descrevem os deltas para a especificação da linguagem a fim de adicionar os novos recursos. Eles estão em formato de rascunho de proposta. Essas especificações serão refinadas e enviadas ao comitê de padrões ECMA para revisão formal e incorporação em uma versão futura do Padrão C#.

Propostas de especificação do C# 7.0
Implementamos diversos recursos novos no C# 7.0. Entre eles estão correspondência de padrões, funções locais, declarações de variável out, expressões throw, literais binários e separadores de dígito. Esta pasta contém as especificações de cada um desses recursos.

Propostas de especificação do C# 7.1
Há novos recursos adicionados no C# 7.1. Primeiramente, você pode gravar um método Main que retorna Task ou Task<int>. Isso permite que você adicione o modificador async ao Main. A expressão default pode ser usada sem um tipo em locais onde o tipo pode ser inferido. Além disso, os nomes dos membros de tupla podem ser inferidos. Por fim, a correspondência de padrões pode ser usada com genéricos.

Propostas de especificação do C# 7.2
O C# 7.2 adicionou a uma série de recursos pequenos. Você pode passar argumentos por referência de somente leitura usando a palavra-chave in. Há uma série de alterações de nível inferior para dar suporte à segurança de tempo de compilação para Span e tipos relacionados. Você pode usar argumentos nomeados nos quais os argumentos posteriores são posicionais, em algumas situações. O modificador de acesso private protected permite que você especifique que os chamadores são limitados aos tipos derivados, implementados no mesmo assembly. O operador ?: pode resolver em uma referência a uma variável. Você também pode formatar números hexadecimais e binários usando um separador de dígito à esquerda.

Propostas de especificação do C# 7.3
C# 7.3 é outra versão de ponto que inclui várias atualizações pequenas. Você pode usar novas restrições em parâmetros de tipo genérico. Outras alterações facilitam trabalhar com campos fixed, incluindo o uso de alocações stackalloc. As variáveis locais declaradas com a palavra-chave ref podem ser reatribuídas para se referir ao novo armazenamento. Você pode colocar os atributos em propriedades autoimplementadas que direcionam o campo de suporte gerado pelo compilador. As variáveis de expressão podem ser usadas em inicializadores. As tuplas podem ser comparadas quanto à igualdade (ou desigualdade). Também houve algumas melhorias para a resolução de sobrecarga.

Propostas de especificação do C# 8.0
O C# 8.0 está disponível com o .NET Core 3.0. Os recursos incluem tipos de referência que permitem valor nulo, correspondência de padrões recursiva, métodos de interface padrão, fluxos assíncronos, intervalos e índices, uso com base em padrão e declarações de uso, atribuição de avaliação de nulo e membros de instância somente leitura.

Propostas de especificação do C# 9
O C# 9 está disponível com o .NET 5. Os recursos incluem registros, instruções de nível superior, aprimoramentos de correspondência de padrões, setters somente init, novas expressões de tipo de destino, inicializadores de módulo, extensão de métodos parciais, funções anônimas estáticas, expressões condicionais com tipo de destino, tipos de retorno covariantes, extensão GetEnumerator em loops foreach, parâmetros de descarte lambda, atributos em funções locais, inteiros de tamanho nativo, ponteiros de função, suprimir a emissão de sinalizador localsinit e anotações de parâmetro de tipo sem restrição.

Propostas de especificação do C# 10
O C# 10 está disponível com o .NET Core 6. Os recursos incluem structs de registro, construtores de struct sem parâmetros, diretivas de uso global, namespaces com escopo de arquivo, padrões de propriedade estendidos, cadeias de caracteres interpoladas aprimoradas, cadeias de caracteres interpoladas constantes, melhorias de lambda, expressão de argumento de chamador, diretivas #line aprimoradas, atributos genéricos, análise de atribuição definitiva aprimorada e substituição AsyncMethodBuilder.

Usando o ambiente de desenvolvimento do Visual Studio para C#
Fornece links para tópicos conceituais e de tarefas que descrevem o IDE e o Editor.

Guia de Programação em C#
Inclui informações sobre como usar a linguagem de programação do C#.