Statische anonyme FunktionenStatic anonymous functions
ZusammenfassungSummary
Lässt einen static-Modifizierer für Lambdas und anonyme Methoden zu. Dadurch wird die Erfassung von lokalen oder instanzzuständen aus enthaltenden Bereichen nicht zugelassen.Allow a 'static' modifier on lambdas and anonymous methods, which disallows capture of locals or instance state from containing scopes.
MotivationMotivation
Vermeiden Sie unbeabsichtigt das Erfassen des Zustands aus dem einschließenden Kontext. Dies kann zu unerwarteter Beibehaltung von aufgezeichneten Objekten oder unerwarteten zusätzlichen Zuordnungen führen.Avoid unintentionally capturing state from the enclosing context, which can result in unexpected retention of captured objects or unexpected additional allocations.
Detaillierter EntwurfDetailed design
Eine Lambda-oder anonyme Methode kann über einen static
Modifizierer verfügen.A lambda or anonymous method may have a static
modifier. Der- static
Modifizierer gibt an, dass die Lambda-oder anonyme Methode eine statische anonyme Funktion ist.The static
modifier indicates that the lambda or anonymous method is a static anonymous function.
Eine statische anonyme Funktion kann den Zustand nicht aus dem einschließenden Bereich erfassen.A static anonymous function cannot capture state from the enclosing scope.
Demzufolge sind lokale, Parameter und this
aus dem einschließenden Bereich in einer statischen anonymen Funktion nicht verfügbar.As a result, locals, parameters, and this
from the enclosing scope are not available within a static anonymous function.
Eine statische anonyme Funktion kann nicht auf Instanzmember von einem impliziten oder expliziten this
oder base
Verweis verweisen.A static anonymous function cannot reference instance members from an implicit or explicit this
or base
reference.
Eine statische anonyme Funktion kann auf Member static
aus dem einschließenden Bereich verweisen.A static anonymous function may reference static
members from the enclosing scope.
Eine statische anonyme Funktion kann auf constant
Definitionen aus dem einschließenden Bereich verweisen.A static anonymous function may reference constant
definitions from the enclosing scope.
nameof()
in einer statischen anonymen Funktion kann auf lokale, Parameter oder this
oder base
aus dem einschließenden Bereich verwiesen werden.nameof()
in a static anonymous function may reference locals, parameters, or this
or base
from the enclosing scope.
Zugriffsregeln für Elemente private
im einschließenden Bereich sind für static
und nicht static
Anonyme Funktionen identisch.Accessibility rules for private
members in the enclosing scope are the same for static
and non-static
anonymous functions.
Es wird nicht garantiert, ob eine statische anonyme Funktions Definition als static
Methode in den Metadaten ausgegeben wird.No guarantee is made as to whether a static anonymous function definition is emitted as a static
method in metadata. Dies wird von der compilerimplementierung bis zur Optimierung verbleiben.This is left up to the compiler implementation to optimize.
Eine nicht static
lokale Funktion oder eine anonyme Funktion kann den Zustand aus einer einschließenden statischen anonymen Funktion aufzeichnen, aber keinen Zustand außerhalb der einschließenden statischen anonymen Funktion erfassen.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.
Wenn Sie den- static
Modifizierer aus einer anonymen Funktion in einem gültigen Programm entfernen, wird die Bedeutung des Programms nicht geändert.Removing the static
modifier from an anonymous function in a valid program does not change the meaning of the program.