Parametry zahození lambda
Poznámka
Tento článek je specifikace funkce. Specifikace slouží jako návrhový dokument pro funkci. Zahrnuje navrhované změny specifikace spolu s informacemi potřebnými při návrhu a vývoji funkce. Tyto články se publikují, dokud nebudou navrhované změny specifikace finalizovány a začleněny do aktuální specifikace ECMA.
Mezi specifikací funkce a dokončenou implementací může docházet k nějakým nesrovnalostem. Tyto rozdíly jsou zachyceny v příslušných poznámkách schůzky o návrhu jazyka (LDM).
Další informace o procesu přijetí specifikací funkcí do jazyka C# najdete v článku o specifikacích .
Problém šampiona: https://github.com/dotnet/csharplang/issues/111
Shrnutí
Povolit použít zahození (_
) jako parametr pro lambdy a anonymní metody.
Například:
- lambda:
(_, _) => 0
,(int _, int _) => 0
- anonymní metody:
delegate(int _, int _) { return 0; }
Motivace
Nepoužité parametry nemusí být pojmenované. Záměr zahození je jasný, tj. nepoužité či zahozené.
Podrobný návrh
Parametry metody - §15.6.2 V seznamu parametrů lambda nebo anonymní metody s více než jedním parametrem s názvem _
, takové parametry jsou zahazovací parametry.
Poznámka: Pokud je jeden parametr pojmenován _
pak je to běžný parametr z důvodu zpětné kompatibility.
Parametry pro zahození nezavedou žádné názvy do žádných oborů.
Všimněte si, že tím nezpůsobují skrytí žádných názvů _
(s podtržítkem).
Jednoduché názvy (§12.8.4) Pokud je K
nula a simple_name se zobrazí v bloku a pokud blok(nebo ohraničený blok' s) místní prostor deklarace proměnných (Deklarace - §7.3) obsahuje místní proměnnou, parametr (s výjimkou parametrů zahození) nebo konstanta s názvem I
, pak simple_name odkazuje na tuto místní proměnnou, parametr nebo konstantu a je klasifikována jako proměnná nebo hodnota.
Rozsahy - §7.7 S výjimkou parametrů zahození, rozsahem parametru deklarovaného v lambda_expression (§12.19) je anonymous_function_body tohoto lambda_expression S výjimkou parametrů zahození je rozsah parametru deklarovaného v anonymous_method_expression (§12.19) blok tohoto anonymous_method_expression.
Související oddíly specifikace
- Odpovídající parametry - §12.6.2.2
C# feature specifications