Compartir a través de


Atributos en funciones locales

Nota

Este artículo es una especificación de características. La especificación actúa como documento de diseño de la característica. Incluye cambios de especificación propuestos, junto con la información necesaria durante el diseño y el desarrollo de la característica. Estos artículos se publican hasta que se finalizan los cambios de especificación propuestos e se incorporan en la especificación ECMA actual.

Puede haber algunas discrepancias entre la especificación de características y la implementación completada. Esas diferencias se recogen en las notas de la reunión de diseño de lenguaje (LDM) correspondientes.

Puede obtener más información sobre el proceso de adopción de especificaciones de características en el estándar del lenguaje C# en el artículo sobre las especificaciones de .

Atributos

Las declaraciones de función local ahora pueden tener atributos (§22). Los parámetros y los parámetros de tipo en las funciones locales también pueden tener atributos.

Los atributos con un significado especificado cuando se aplican a un método, sus parámetros o sus parámetros de tipo tendrán el mismo significado cuando se aplican a una función local, sus parámetros o sus parámetros de tipo, respectivamente.

Una función local se puede hacer condicional en el mismo sentido que un método condicional (§22.5.3) decorando con un [ConditionalAttribute]. Una función local condicional también debe ser static. Todas las restricciones de los métodos condicionales también se aplican a las funciones locales condicionales, incluido que el tipo de valor devuelto debe ser void.

Extern

El modificador extern ahora está permitido en funciones locales. Esto hace que la función local sea externa en el mismo sentido que un método externo (§15.6.8).

De forma similar a un método externo, el local-function-body de una función local externa debe ser un punto y coma. Solo se permite un punto y coma en una función local externa local-function-body.

Una función local externa también debe ser static.

Sintaxis

El §13.6.4 o la gramática de funciones locales se ha modificado de la siguiente manera:

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