Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
Este artigo é uma especificação de recurso. A especificação serve como o documento de design para o recurso. Ele inclui mudanças de especificação propostas, juntamente com as informações necessárias durante o design e desenvolvimento do recurso. Estes artigos são publicados até que as alterações de especificações propostas sejam finalizadas e incorporadas na especificação ECMA atual.
Pode haver algumas discrepâncias entre a especificação do recurso e a implementação concluída. Essas diferenças são capturadas nas notas pertinentes da Language Design Meeting (LDM).
Você pode saber mais sobre o processo de adoção de especificações de recursos no padrão de linguagem C# no artigo sobre as especificações .
Questão campeã: https://github.com/dotnet/csharplang/issues/1888
Atributos
As declarações de função local podem agora ter atributos (§22). Parâmetros e parâmetros de tipo em funções locais também podem ter atributos.
Atributos com um significado especificado quando aplicados a um método, seus parâmetros ou seus parâmetros de tipo terão o mesmo significado quando aplicados a uma função local, seus parâmetros ou seus parâmetros de tipo, respectivamente.
Uma função local pode ser condicionada no mesmo sentido que um método condicional (§22.5.3) decorando-a com um [ConditionalAttribute]. Uma função local condicional também deve ser static. Todas as restrições sobre métodos condicionais também se aplicam a funções locais condicionais, incluindo que o tipo de retorno deve ser void.
Externo
O modificador extern agora é permitido em funções locais. Isto torna a função local externa no mesmo sentido que um método externo (§15.6.8).
Da mesma forma que um método externo, o local-function-body de uma função local externa deve ser um ponto-e-vírgula. Um corpo de função local com ponto-e-vírgula só é permitido numa função local externa.
Uma função local externa também deve ser static.
Sintaxe
O §13.6.4, ou a gramática de funções locais é modificada da seguinte forma:
local-function-header
: attributes? local-function-modifiers? return-type identifier type-parameter-list?
( formal-parameter-list? ) type-parameter-constraints-clauses
;
local-function-modifiers
: (async | unsafe | static | extern)*
;
local-function-body
: block
| arrow-expression-body
| ';'
;
C# feature specifications