Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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/275
Összefoglalás
Engedélyezze a lambda kifejezések és névtelen metódusok „statikus” módosítóját, amely megakadályozza a helyi változók vagy példányállapotok rögzítését a tartalmazó hatókörökben.
Motiváció
Kerülje az állapot akaratlan rögzítését a belefoglaló környezetből, ami a rögzített objektumok váratlan megőrzését vagy váratlan további foglalásokat eredményezhet.
Részletes kialakítás
A lambda vagy névtelen metódusok static módosítóval rendelkezhetnek. A static módosító azt jelzi, hogy a lambda vagy névtelen metódus statikus névtelen függvény.
A statikus névtelen függvények nem tudják rögzíteni az állapotot a belefoglaló hatókörből.
Ennek eredményeképpen a beágyazási hatókörben lévő helyi változók, paraméterek és this nem érhetők el a statikus névtelen függvény-ben.
A statikus névtelen függvény nem hivatkozhat példánytagokra implicit vagy explicit this vagy base hivatkozással.
A statikus névtelen függvény hivatkozhat static tagokra a belefoglalt hatókörből.
A statikus névtelen függvény hivatkozhat constant definíciókra a környező hatókörből.
nameof() egy statikus névtelen függvényben hivatkozhat a hatókör helyi adataira, paramétereire, this vagy base.
A private tagok hatókörbeli hozzáférési szabályai megegyeznek a static és a nemstatic névtelen függvények esetében.
Nincs garancia arra, hogy statikus névtelen függvény definíciója static metódusként van-e kibocsátva a metaadatokban. Az optimalizálás a fordító implementációján múlik.
Egy nemstatic helyi vagy névtelen függvény rögzítheti az állapotot egy befoglaló statikus névtelen függvényből, de nem képes az állapotot rögzíteni a befoglaló statikus névtelen függvényen kívül.
A static módosító eltávolítása egy névtelen függvényből egy érvényes programban nem változtatja meg a program jelentését.
C# feature specifications