Attributs sur des fonctions locales
Remarque
Cet article est une spécification de fonctionnalité. La spécification sert de document de conception pour la fonctionnalité. Il inclut les modifications de spécification proposées, ainsi que les informations nécessaires pendant la conception et le développement de la fonctionnalité. Ces articles sont publiés jusqu’à ce que les modifications de spécification proposées soient finalisées et incorporées dans la spécification ECMA actuelle.
Il peut y avoir des différences entre la spécification de la fonctionnalité et l’implémentation terminée. Ces différences sont consignées dans les notes pertinentes de la réunion de conception linguistique (LDM).
Vous pouvez en savoir plus sur le processus d’adoption des speclets de fonctionnalités dans la norme de langage C# dans l’article sur les spécifications .
Attributs
Les déclarations de fonction locale sont désormais autorisées à avoir des attributs (§22). Les paramètres et les paramètres de type sur les fonctions locales sont également autorisés à avoir des attributs.
Les attributs avec une signification spécifiée lorsqu’ils sont appliqués à une méthode, à ses paramètres ou à ses paramètres de type ont la même signification lorsqu’ils sont appliqués à une fonction locale, à ses paramètres ou à ses paramètres de type, respectivement.
Une fonction locale peut être rendue conditionnelle dans le même sens qu’une méthode conditionnelle (§22.5.3) en la décorant avec un [ConditionalAttribute]
. Une fonction locale conditionnelle doit également être static
. Toutes les restrictions sur les méthodes conditionnelles s’appliquent également aux fonctions locales conditionnelles, y compris que le type de retour doit être void
.
Extern
Le modificateur extern
est désormais autorisé sur les fonctions locales. Cela rend la fonction locale externe au même sens qu’une méthode externe (§15.6.8).
Comme pour une méthode externe, le local-function-body d'une fonction locale externe doit être un point-virgule. Un point-virgule dans le corps de fonction locale n’est autorisé que dans une fonction locale externe.
Une fonction locale externe doit également être static
.
Syntaxe
Le §13.6.4, ou grammaire des fonctions locales, est modifié comme suit :
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