Megosztás a következőn keresztül:


Lambda elvetéses paraméterek

Jegyzet

Ez a cikk egy funkcióspecifikáció. A specifikáció a funkció tervezési dokumentumaként szolgál. Tartalmazza a specifikáció javasolt módosításait, valamint a funkció tervezése és fejlesztése során szükséges információkat. Ezeket a cikkeket mindaddig közzéteszik, amíg a javasolt specifikációmódosításokat nem véglegesítik, és be nem építik a jelenlegi ECMA-specifikációba.

A szolgáltatás specifikációja és a befejezett implementáció között eltérések lehetnek. Ezeket a különbségeket a vonatkozó nyelvi tervezési értekezlet (LDM) megjegyzései rögzítik.

A funkcióspektusok C# nyelvi szabványba való bevezetésének folyamatáról a specifikációkcímű cikkben olvashat bővebben.

Bajnoki probléma: https://github.com/dotnet/csharplang/issues/111

Összefoglalás

Tegye lehetővé, hogy a visszavetéseket (_) a lambdák és névtelen metódusok paramétereként használják. Például:

  • lambdas: (_, _) => 0, (int _, int _) => 0
  • névtelen módszerek: delegate(int _, int _) { return 0; }

Motiváció

A nem használt paramétereket nem kell megnevezni. A visszadobások szándéka egyértelmű, azaz fel nem használt/eldobott.

Részletes kialakítás

Metódusparaméterek – §15.6.2 Egy _nevű lambda vagy névtelen metódus paraméterlistájában ezek a paraméterek elvetési paraméterek. Megjegyzés: ha egyetlen paraméter neve _, akkor az visszafelé kompatibilitási okokból rendszeres paraméter.

A kiszűrt paraméterek nem vezetnek be neveket egy hatókörbe sem. Ez azt jelenti, hogy nem okoznak _ (aláhúzásjel) neveket, hogy el legyenek rejtve.

Egyszerű nevek (§12.8.4) Ha K nulla, és a simple_name megjelenik egy blokkban, és ha a blokk(vagy egy blokk) helyi változó deklarációs tér (Deklarációk - §7.3) tartalmaz egy helyi változót, paraméter (az elvetési paraméterek kivételével) vagy állandó Inévvel, akkor a simple_name arra a helyi változóra, paraméterre vagy állandóra hivatkozik, és változóként vagy értékként van besorolva.

Hatáskörök – §7.7 Az elvetési paraméterek kivételével, a lambda_expression függvényben deklarált paraméter hatóköre (12.19. §) az adott lambda_expressionanonymous_function_body. Az elvetési paraméterek kivételével a anonymous_method_expression metódusban deklarált paraméter hatóköre (12.19. §) az adott anonymous_method_expressionblokkjának.