Sumário detalhado
- Prefácio
- Introdução
- §1 Escopo
- §2 Referências normativas
- §3 Termos e definições
- §4 Descrição geral
- §5 Conformidade
- §6 Estrutura lexical
- §6.1 Programas
- §6.2 Gramáticas
- §6.3 Análise lexical
- §6.4 Tokens
- §6.5 Diretivas de pré-processamento
- §6.5.1 Geral
- §6.5.2 Símbolos de compilação condicional
- §6.5.3 Pré-processamento de expressões
- §6.5.4 Diretivas de definição
- §6.5.5 Diretivas de compilação condicional
- §6.5.6 Diretivas de diagnóstico
- §6.5.7 Diretivas de região
- §6.5.8 Diretivas de linha
- §6.5.9 Diretiva anulável
- §6.5.10 Diretivas Pragma
- §7 Conceitos básicos
- §8 Tipos
- §8.1 Geral
- §8.2 Tipos de referência
- §8.2.1 Geral
- §8.2.2 Tipos de classe
- §8.2.3 O tipo de objeto
- §8.2.4 O tipo de dinâmica
- §8.2.5 O tipo de cadeia de caracteres
- §8.2.6 Tipos de interface
- §8.2.7 Tipos de matriz
- §8.2.8 Tipos delegados
- §8.3 Tipos de valor
- §8.3.1 Geral
- §8.3.2 O tipo System.ValueType
- §8.3.3 Construtores padrão
- §8.3.4 Tipos de struct
- §8.3.5 Tipos simples
- §8.3.6 Tipos integrais
- §8.3.7 Tipos de ponto flutuante
- §8.3.8 O tipo decimal
- §8.3.9 O tipo Bool
- §8.3.10 Tipos de enumeração
- §8.3.11 Tipos de tupla
- §8.3.12 Tipos de valor anulável
- §8.3.13 Boxing e unboxing
- §8.4 Tipos construídos
- §8.5 Parâmetros de tipo
- §8.6 Tipos de árvore de expressão
- §8.7 O tipo dinâmico
- §8.8 Tipos não gerenciados
- §8.9 Tipos de referência e nulidade
- §9 Variáveis
- §9.1 Geral
- §9.2 Categorias de variáveis
- §9.3 Valores padrão
- §9.4 Atribuição definitiva
- §9.4.1 Geral
- §9.4.2 Variáveis inicialmente atribuídas
- §9.4.3 Variáveis inicialmente não atribuídas
- §9.4.4 Regras precisas para determinar a atribuição definida
- §9.4.4.1 Geral
- §9.4.4.2 Regras gerais para declarações
- §9.4.4.3 Instruções de bloco, instruções verificadas e não verificadas
- §9.4.4.4 Instruções de expressão
- §9.4.4.5 Declarações de declaração
- §9.4.4.6 Instruções If
- §9.4.4.7 Instruções Switch
- §9.4.4.8 Instruções While
- §9.4.4.9 Instruções Do
- §9.4.4.10 Para instruções
- §9.4.4.11 Instruções Break, continue e goto
- §9.4.4.12 Instruções throw
- §9.4.4.13 Instruções de retorno
- §9.4.4.14 Instruções try-catch
- §9.4.4.15 Instruções try-finally
- §9.4.4.16 Instruções try-catch-finally
- §9.4.4.17 Instruções Foreach
- §9.4.4.18 Usando instruções
- §9.4.4.19 Instruções de bloqueio
- §9.4.4.20 Declarações de rendimento
- §9.4.4.21 Regras gerais para expressões constantes
- §9.4.4.22 Regras gerais para expressões simples
- §9.4.4.23 Regras gerais para expressões com expressões incorporadas
- §9.4.4.24 Expressões de invocação e expressões de criação de objeto
- §9.4.4.25 Expressões de atribuição simples
- §9.4.4.26 &; expressões
- §9.4.4.27 || expressões
- §9.4.4.28 ! expressões
- §9.4.4.29 ?? expressões
- §9.4.4.30 ?: expressões
- §9.4.4.31 Funções anônimas
- §9.4.4.32 Expressões de lançamento
- §9.4.4.33 Regras para variáveis em funções locais
- §9.4.4.34 Expressões de padrão IS
- §9.5 Referências de variáveis
- §9.6 Atomicidade de referências variáveis
- §9.7 Variáveis de referência e retornos
- §9.7.1 Geral
- §9.7.2 Contextos seguros de referência
- §9.7.2.1 Geral
- §9.7.2.2 Contexto seguro de referência de variável local
- §9.7.2.3 Contexto seguro de referência de parâmetro
- §9.7.2.4 Contexto seguro de referência de campo
- §9.7.2.5 Operadores
- §9.7.2.6 Invocação de função
- §9.7.2.7 Valores
- §9.7.2.8 Invocações de construtor
- §9.7.2.9 Limitações nas variáveis de referência
- §10 Conversões
- §10.1 Geral
- §10.2 Conversões implícitas
- §10.2.1 Geral
- §10.2.2 Conversão de identidade
- §10.2.3 Conversões numéricas implícitas
- §10.2.4 Conversões de enumeração implícita
- §10.2.5 Conversões de cadeia de caracteres interpoladas implícitas
- §10.2.6 Conversões implícitas anuláveis
- §10.2.7 Conversões literais nulas
- §10.2.8 Conversões de referência implícitas
- §10.2.9 Conversões de encaixotamento
- §10.2.10 Conversões dinâmicas implícitas
- §10.2.11 Conversões de expressão constante implícita
- §10.2.12 Conversões implícitas envolvendo parâmetros de tipo
- §10.2.13 Conversões de tupla implícitas
- §10.2.14 Conversões implícitas definidas pelo usuário
- §10.2.15 Conversões de funções anônimas e conversões de grupos de métodos
- §10.2.16 Conversões literais padrão
- §10.2.17 Conversões de lançamento implícitas
- §10.3 Conversões explícitas
- §10.3.1 Geral
- §10.3.2 Conversões numéricas explícitas
- §10.3.3 Conversões explícitas de enumeração
- §10.3.4 Conversões explícitas anuláveis
- §10.3.5 Conversões de referência explícitas
- §10.3.6 Conversões explícitas de tupla
- §10.3.7 Conversões de unboxing
- §10.3.8 Conversões explícitas envolvendo parâmetros de tipo
- §10.3.9 Conversões explícitas definidas pelo usuário
- §10.4 Conversões padrão
- §10.5 Conversões definidas pelo usuário
- §10.6 Conversões envolvendo tipos anuláveis
- §10.7 Conversões de função anônimas
- §10.8 Conversões de grupo de métodos
- §11 Padrões e correspondência de padrões
- §12 Expressões
- §12.1 Geral
- §12.2 Classificações de expressão
- §12.3 Vinculação estática e dinâmica
- §12.4 Operadores
- §12.4.1 Geral
- §12.4.2 Precedência e associatividade do operador
- §12.4.3 Sobrecarga do operador
- §12.4.4 Resolução de sobrecarga de operador unário
- §12.4.5 Resolução de sobrecarga do operador binário
- §12.4.6 Operadores candidatos definidos pelo usuário
- §12.4.7 Promoções numéricas
- §12.4.8 Operadores levantados
- §12.5 Pesquisa de membro
- §12.6 Membros da função
- §12.6.1 Geral
- §12.6.2 Listas de argumentos
- §12.6.3 Inferência de tipo
- §12.6.3.1 Geral
- §12.6.3.2 A primeira fase
- §12.6.3.3 A segunda fase
- §12.6.3.4 Tipos de entrada
- §12.6.3.5 Tipos de saída
- §12.6.3.6 Dependência
- §12.6.3.7 Inferências de tipo de saída
- §12.6.3.8 Inferências explícitas de tipo de parâmetro
- §12.6.3.9 Inferências exatas
- §12.6.3.10 Inferências de limite inferior
- §12.6.3.11 Inferências de limite superior
- §12.6.3.12 Correção
- §12.6.3.13 Tipo de retorno inferido
- §12.6.3.14 Inferência de tipo para conversão de grupos de métodos
- §12.6.3.15 Encontrando o melhor tipo comum de um conjunto de expressões
- §12.6.4 Resolução de sobrecarga
- §12.6.5 Verificação em tempo de compilação da invocação dinâmica de membro
- §12.6.6 Invocação de membro de função
- §12.7 Desconstrução
- §12.8 Expressões primárias
- §12.8.1 Geral
- §12.8.2 Literais
- §12.8.3 Expressões de cadeia de caracteres interpoladas
- §12.8.4 Nomes simples
- §12.8.5 Expressões entre parênteses
- §12.8.6 Expressões de tupla
- §12.8.7 Acesso de membros
- §12.8.8 Acesso condicional nulo de membro
- §12.8.9 Expressões que perdoam nulos
- §12.8.10 Expressões de invocação
- §12.8.10.1 Geral
- §12.8.10.2 Invocações de método
- §12.8.10.3 Invocações de método de extensão
- §12.8.10.4 Invocações delegadas
- §12.8.11 Expressão de invocação condicional nula
- §12.8.12 Acesso ao elemento
- §12.8.12.1 Geral
- §12.8.12.2 Acesso à matriz
- §12.8.12.3 Acesso do indexador
- §12.8.13 Acesso a elemento condicional nulo
- §12.8.14 Este acesso
- §12.8.15 Acesso básico
- §12.8.16 Operadores de incremento e decremento de sufixo
- §12.8.17 O novo operador
- §12.8.17.1 Geral
- §12.8.17.2 Expressões de criação de objeto
- §12.8.17.3 Inicializadores de objeto
- §12.8.17.4 Inicializadores de coleção
- §12.8.17.5 Expressões de criação de matriz
- §12.8.17.6 Expressões de criação de delegados
- §12.8.17.7 Expressões de criação de objeto anônimo
- §12.8.18 O operador typeof
- §12.8.19 O operador sizeof
- §12.8.20 Os operadores verificados e não verificados
- §12.8.21 Expressões de valor padrão
- §12.8.22 Alocação de pilha
- §12.8.23 O operador nameof
- §12.8.24 Expressões de método anônimo
- §12.9 Operadores unários
- §12.10 Operadores aritméticos
- §12.11 Operadores de turno
- §12.12 Operadores relacionais e de teste de tipo
- §12.12.1 Geral
- §12.12.2 Operadores de comparação de inteiros
- §12.12.3 Operadores de comparação de ponto flutuante
- §12.12.4 Operadores de comparação decimal
- §12.12.5 Operadores de igualdade booleana
- §12.12.6 Operadores de comparação de enumeração
- §12.12.7 Operadores de igualdade de tipo de referência
- §12.12.8 Operadores de igualdade de cadeia de caracteres
- §12.12.9 Delegar operadores de igualdade
- §12.12.10 Operadores de igualdade entre tipos de valor anulável e o literal nulo
- §12.12.11 Operadores de igualdade de tupla
- §12.12.12 O operador is
- §12.12.12.1 O operador do tipo is
- §12.12.12.2 O operador is-pattern
- §12.12.13 O operador as
- §12.13 Operadores lógicos
- §12.14 Operadores lógicos condicionais
- §12.15 O operador de união nula
- §12.16 O operador de expressão throw
- §12.17 Expressões de declaração
- §12.18 Operador condicional
- §12.19 Expressões de função anônimas
- §12.19.1 Geral
- §12.19.2 Assinaturas de função anônimas
- §12.19.3 Corpos de função anônimos
- §12.19.4 Resolução de sobrecarga
- §12.19.5 Funções anônimas e vinculação dinâmica
- §12.19.6 Variáveis externas
- §12.19.6.1 Geral
- §12.19.6.2 Variáveis externas capturadas
- §12.19.6.3 Instanciação de variáveis locais
- §12.19.7 Avaliação de expressões de função anônimas
- §12.19.8 Exemplo de implementação
- §12.20 Expressões de consulta
- §12.20.1 Geral
- §12.20.2 Ambiguidades em expressões de consulta
- §12.20.3 Conversão de expressão de consulta
- §12.20.3.1 Geral
- §12.20.3.2 Expressões de consulta com continuações
- §12.20.3.3 Tipos de variáveis de intervalo explícito
- §12.20.3.4 Expressões de consulta degeneradas
- §12.20.3.5 Cláusulas de, let, where, join e orderby
- §12.20.3.6 Cláusulas Select
- §12.20.3.7 Cláusulas de grupo
- §12.20.3.8 Identificadores transparentes
- §12.20.4 O padrão de expressão de consulta
- §12.21 Operadores de atribuição
- §12.22 Expressão
- §12.23 Expressões constantes
- §12.24 Expressões booleanas
- §13 Declarações
- §13.1 Geral
- §13.2 Pontos finais e acessibilidade
- §13.3 Blocos
- §13.4 A declaração vazia
- §13.5 Instruções rotuladas
- §13.6 Declarações de declaração
- §13.7 Instruções de expressão
- §13.8 Declarações de seleção
- §13.9 Instruções de iteração
- §13.10 Instruções de salto
- §13.11 A instrução try
- §13.12 As instruções verificadas e não verificadas
- §13.13 A instrução de bloqueio
- §13.14 A instrução using
- §13.15 A declaração de rendimento
- §14 Espaços nominais
- §15 Aulas
- §15.1 Geral
- §15.2 Declarações de classe
- §15.2.1 Geral
- §15.2.2 Modificadores de classe
- §15.2.2.1 Geral
- §15.2.2.2 Classes abstratas
- §15.2.2.3 Classes seladas
- §15.2.2.4 Classes estáticas
- §15.2.2.4.1 Geral
- §15.2.2.4.2 Referenciando tipos de classe estática
- §15.2.3 Parâmetros de tipo
- §15.2.4 Especificação básica da classe
- §15.2.5 Restrições de parâmetro de tipo
- §15.2.6 Corpo da classe
- §15.2.7 Declarações parciais
- §15.3 Membros da classe
- §15.3.1 Geral
- §15.3.2 O tipo de instância
- §15.3.3 Membros de tipos construídos
- §15.3.4 Herança
- §15.3.5 O novo modificador
- §15.3.6 Modificadores de acesso
- §15.3.7 Tipos de constituintes
- §15.3.8 Membros estáticos e de instância
- §15.3.9 Tipos aninhados
- §15.3.10 Nomes de membros reservados
- §15.3.10.1 Geral
- §15.3.10.2 Nomes de membros reservados para propriedades
- §15.3.10.3 Nomes de membros reservados para eventos
- §15.3.10.4 Nomes de membros reservados para indexadores
- §15.3.10.5 Nomes de membros reservados para finalizadores
- §15.3.10.6 Nomes de método reservados para operadores
- §15.4 Constantes
- §15.5 Campos
- §15.6 Métodos
- §15.6.1 Geral
- §15.6.2 Parâmetros do método
- §15.6.2.1 Geral
- §15.6.2.2 Parâmetros de valor
- §15.6.2.3 Parâmetros por referência
- §15.6.2.3.1 Geral
- §15.6.2.3.2 Parâmetros de entrada
- §15.6.2.3.3 Parâmetros de referência
- §15.6.2.3.4 Parâmetros de saída
- §15.6.2.4 Matrizes de parâmetros
- §15.6.3 Métodos estáticos e de instância
- §15.6.4 Métodos virtuais
- §15.6.5 Substituir métodos
- §15.6.6 Métodos selados
- §15.6.7 Métodos abstratos
- §15.6.8 Métodos externos
- §15.6.9 Métodos parciais
- §15.6.10 Métodos de extensão
- §15.6.11 Corpo do método
- §15.7 Propriedades
- §15.8 Eventos
- §15.9 Indexadores
- §15.10 Operadores
- §15.11 Construtores de instância
- §15.12 Construtores estáticos
- §15.13 Finalizadores
- §15.14 Iteradores
- §15.14.1 Geral
- §15.14.2 Interfaces do enumerador
- §15.14.3 Interfaces enumeráveis
- §15.14.4 Tipo de rendimento
- §15.14.5 Objetos enumeradores
- §15.14.5.1 Geral
- §15.14.5.2 O método MoveNext
- §15.14.5.3 A propriedade Current
- §15.14.5.4 O método Descartar
- §15.14.6 Objetos enumeráveis
- §15.14.6.1 Geral
- §15.14.6.2 O método GetEnumerator
- §15.15 Funções assíncronas
- §16 Estruturas
- §16.1 Geral
- §16.2 Declarações de struct
- §16.3 Membros de struct
- §16.4 Diferenças de classe e struct
- §16.4.1 Geral
- §16.4.2 Semântica de valor
- §16.4.3 Herança
- §16.4.4 Cessão
- §16.4.5 Valores padrão
- §16.4.6 Boxing e unboxing
- §16.4.7 Significado deste
- §16.4.8 Inicializadores de campo
- §16.4.9 Construtores
- §16.4.10 Construtores estáticos
- §16.4.11 Propriedades implementadas automaticamente
- §16.4.12 Restrição de contexto seguro
- §16.4.12.1 Geral
- §16.4.12.2 Contexto de parâmetro seguro
- §16.4.12.3 Contexto seguro de variável local
- §16.4.12.4 Contexto de segurança de campo
- §16.4.12.5 Operadores
- §16.4.12.6 Invocação de método e propriedade
- §16.4.12.7 stackalloc
- §16.4.12.8 Invocações de construtor
- §17 Matrizes
- §18 Interfaces
- §18.1 Geral
- §18.2 Declarações de interface
- §18.3 Corpo da interface
- §18.4 Membros da interface
- §18.5 Nomes de membros de interface qualificados
- §18.6 Implementações de interface
- §18.6.1 Geral
- §18.6.2 Implementações explícitas de membros da interface
- §18.6.3 Unicidade das interfaces implementadas
- §18.6.4 Implementação de métodos genéricos
- §18.6.5 Mapeamento de interface
- §18.6.6 Herança de implementação de interface
- §18.6.7 Reimplementação da interface
- §18.6.8 Classes e interfaces abstratas
- §19 Enumerações
- §20 Delegados
- §21 Exceções
- §22 Atributos
- §22.1 Geral
- §22.2 Classes de atributo
- §22.3 Especificação de atributo
- §22.4 Instâncias de atributo
- §22.5 Atributos reservados
- §22.5.1 Geral
- §22.5.2 O atributo AttributeUsage
- §22.5.3 O atributo condicional
- §22.5.4 O atributo Obsoleto
- §22.5.5 O atributo AsyncMethodBuilder
- §22.5.6 Atributos de informações do chamador
- §22.5.7 Atributos de análise de código
- §22.5.7.1 Geral
- §22.5.7.2 O atributo AllowNull
- §22.5.7.3 O atributo DisallowNull
- §22.5.7.4 O atributo DoesNotReturn
- §22.5.7.5 O atributo DoesNotReturnIf
- §22.5.7.6 O atributo MaybeNull
- §22.5.7.7 O atributo MaybeNullWhen
- §22.5.7.8 O atributo NotNull
- §22.5.7.9 O atributo NotNullIfNotNull
- §22.5.7.10 O atributo NotNullWhen
- §22.6 Atributos para interoperação
- §23 Código não seguro
- §A Gramática
- §B Questões de portabilidade
- §C Biblioteca padrão
- §D Comentários sobre a documentação
- §D.1 Geral
- §D.2 Introdução
- §D.3 Tags recomendadas
- §D.3.1 Geral
- §D.3.2<c>
- Código D.3.3<>
- Exemplo de §D.3.4<>
- Exceção do ponto D.3.5<>
- §D.3.6<incluir>
- §D.3.7<lista>
- §D.3.8<parágrafo>
- §D.3.9<parâmetro>
- §D.3.10<paramref>
- §D.3.11<permissão>
- §D.3.12<observações>
- §D.3.13<Devoluções>
- §D.3.14<ver>
- §D.3.15<ver também>
- Resumo do ponto D.3.16<>
- §D.3.17<typeparam>
- §D.3.18<typeparamref>
- §D.3.19<valor>
- §D.4 Processamento do arquivo de documentação
- §D.5 Um exemplo
- §E Bibliografia
Colaborar conosco no GitHub
A fonte deste conteúdo pode ser encontrada no GitHub, onde você também pode criar e revisar problemas e solicitações de pull. Para obter mais informações, confira o nosso guia para colaboradores.
ECMA C# draft specification