Parameter zum Verwerfen von Lambdafunktion
Anmerkung
Dieser Artikel ist eine Featurespezifikation. Die Spezifikation dient als Designdokument für das Feature. Es enthält vorgeschlagene Spezifikationsänderungen sowie Informationen, die während des Entwurfs und der Entwicklung des Features erforderlich sind. Diese Artikel werden veröffentlicht, bis die vorgeschlagenen Spezifikationsänderungen abgeschlossen und in die aktuelle ECMA-Spezifikation aufgenommen werden.
Es kann einige Abweichungen zwischen der Featurespezifikation und der abgeschlossenen Implementierung geben. Diese Unterschiede werden in den entsprechenden Hinweisen zum Language Design Meeting (LDM) erfasst.
Weitere Informationen zum Prozess für die Aufnahme von Funktions-Speclets in den C#-Sprachstandard finden Sie im Artikel zu den Spezifikationen.
Zusammenfassung
Erlauben, dass Verwerfungen (_
) als Parameter von Lambdas und anonymen Methoden verwendet werden können.
Zum Beispiel:
- Lambdas:
(_, _) => 0
,(int _, int _) => 0
- anonyme Methoden:
delegate(int _, int _) { return 0; }
Motivation
Nicht verwendete Parameter müssen nicht benannt werden. Die Absicht von Verwerfungen ist klar, d. h. sie werden nicht verwendet/verworfen.
Detailliertes Design
Methodenparameter - §15.6.2 In der Parameterliste einer Lambda- oder anonymen Methode mit mehr als einem Parameter namens _
werden solche Parameter verworfen.
Hinweis: Wenn ein einzelner Parameter _
benannt wird, handelt es sich um einen regulären Parameter aus Gründen der Abwärtskompatibilität.
Parameter zum Verwerfen führen keine Namen in Gültigkeitsbereiche ein.
Beachten Sie, dass sie nicht dazu führen, dass Namen mit Unterstrich wie _
ausgeblendet werden.
Einfache Namen (§12.8.4) Wenn K
null ist und der simple_name in einem Block angezeigt wird und wenn der lokale Variablendeklarationsraum des Blocks (oder ein eingeschlossener Block) (Deklarationen – §7.3) eine lokale Variable, Parameter (mit Ausnahme von Parametern zum Verwerfen) oder eine Konstante mit dem Namen enthältI
, dann bezieht sich simple_name auf diese lokale Variable, diesen Parameter oder diese Konstante und wird als Variable oder Wert eingestuft.
Bereiche – §7.7 Mit Ausnahme von Parametern zum Verwerfen ist der Bereich eines in einem lambda-Ausdruck (§12.19) deklarierten Parameters der anonymous_function_body dieses lambda-Ausdrucks. Mit Ausnahme von Parametern zum Verwerfen ist der Bereich eines in einem anonymous_method_expression deklarierten Parameters (§12.19) der Block dieser anonymous_method_expression.
Zugehörige Spezifikationsabschnitte
- Entsprechende Parameter – §12.6.2.2
C# feature specifications