Funciones anónimas estáticasStatic anonymous functions

ResumenSummary

Permite un modificador ' Static ' en expresiones lambda y métodos anónimos, lo que no permite la captura de variables locales o el estado de la instancia de los ámbitos contenedores.Allow a 'static' modifier on lambdas and anonymous methods, which disallows capture of locals or instance state from containing scopes.

MotivaciónMotivation

Evite capturar involuntariamente el estado del contexto envolvente, lo que puede provocar una retención inesperada de objetos capturados o asignaciones adicionales inesperadas.Avoid unintentionally capturing state from the enclosing context, which can result in unexpected retention of captured objects or unexpected additional allocations.

Diseño detalladoDetailed design

Una expresión lambda o un método anónimo puede tener un static modificador.A lambda or anonymous method may have a static modifier. El static modificador indica que la expresión lambda o el método anónimo es una función anónima estática.The static modifier indicates that the lambda or anonymous method is a static anonymous function.

Una función anónima estática no puede capturar el estado del ámbito de inclusión.A static anonymous function cannot capture state from the enclosing scope. Como resultado, las variables locales, los parámetros y this el ámbito de inclusión no están disponibles dentro de una función anónima estática.As a result, locals, parameters, and this from the enclosing scope are not available within a static anonymous function.

Una función anónima estática no puede hacer referencia a miembros de instancia de una referencia implícita o explícita this base .A static anonymous function cannot reference instance members from an implicit or explicit this or base reference.

Una función anónima estática puede hacer referencia a static los miembros del ámbito de inclusión.A static anonymous function may reference static members from the enclosing scope.

Una función anónima estática puede hacer referencia a constant definiciones del ámbito de inclusión.A static anonymous function may reference constant definitions from the enclosing scope.

nameof() en una función anónima estática , puede hacer referencia a variables locales, parámetros o this base en el ámbito de inclusión.nameof() in a static anonymous function may reference locals, parameters, or this or base from the enclosing scope.

Las reglas de accesibilidad para private los miembros del ámbito de inclusión son las mismas para static static las funciones y no anónimas.Accessibility rules for private members in the enclosing scope are the same for static and non-static anonymous functions.

No se garantiza si una definición de función anónima estática se emite como un static método en los metadatos.No guarantee is made as to whether a static anonymous function definition is emitted as a static method in metadata. Esto se deja hasta la implementación del compilador para optimizar.This is left up to the compiler implementation to optimize.

Una función no static local o anónima puede capturar el estado de una función anónima estática envolvente, pero no puede capturar el estado fuera de la función anónima envolvente static.A non-static local function or anonymous function can capture state from an enclosing static anonymous function but cannot capture state outside the enclosing static anonymous function.

Al quitar el static modificador de una función anónima en un programa válido, no se cambia el significado del programa.Removing the static modifier from an anonymous function in a valid program does not change the meaning of the program.