Attributs sur des fonctions localesAttributes on local functions

AttributsAttributes

Les déclarations de fonction locale sont désormais autorisées à avoir des attributs.Local function declarations are now permitted to have attributes. Les paramètres et les paramètres de type sur les fonctions locales sont également autorisés à avoir des attributs.Parameters and type parameters on local functions are also allowed to have attributes.

Les attributs ayant 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.Attributes with a specified meaning when applied to a method, its parameters, or its type parameters will have the same meaning when applied to a local function, its parameters, or its type parameters, respectively.

Une fonction locale peut être rendue conditionnelle dans le même sens qu’une méthode conditionnelle en la décorant avec un [ConditionalAttribute] .A local function can be made conditional in the same sense as a conditional method by decorating it with a [ConditionalAttribute]. Une fonction locale conditionnelle doit également être static .A conditional local function must also be 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 .All restrictions on conditional methods also apply to conditional local functions, including that the return type must be void.

ExternesExtern

Le extern modificateur est désormais autorisé sur les fonctions locales.The extern modifier is now permitted on local functions. Cela rend la fonction locale externe dans le même sens qu’une méthode externe.This makes the local function external in the same sense as an external method.

À l’instar d’une méthode externe, le corps de fonction locale d’une fonction locale externe doit être un point-virgule.Similarly to an external method, the local-function-body of an external local function must be a semicolon. Un corps de fonction locale de point-virgule est uniquement autorisé sur une fonction locale externe.A semicolon local-function-body is only permitted on an external local function.

Une fonction locale externe doit également être static .An external local function must also be static.

SyntaxSyntax

La grammaire Functions locale est modifiée comme suit :The local functions grammar is modified as follows:

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
    | ';'
    ;