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/4394
Összefoglalás
Engedjük meg a tulajdonság al-mintázatainak, hogy beágyazott tagokra hivatkozhassanak, például:
if (e is MethodCallExpression { Method.Name: "MethodName" })
Ahelyett, hogy:
if (e is MethodCallExpression { Method: { Name: "MethodName" } })
Motiváció
Ha össze szeretné kapcsolni a gyermek tulajdonságával, egy másik rekurzív minta beágyazása túl sok zajt kelt, ami ronthatja az olvashatóságot anélkül, hogy valós előnyt nyújtana.
Részletes kialakítás
A property_pattern szintaxis a következőképpen módosul:
property_pattern
: type? property_pattern_clause simple_designation?
;
property_pattern_clause
: '{' (subpattern (',' subpattern)* ','?)? '}'
;
subpattern
- : identifier ':' pattern
+ : subpattern_name ':' pattern
;
+subpattern_name
+ : identifier
+ | subpattern_name '.' identifier
+ ;
Az egyes névkeresések fogadója az előző tag T0típusa, indulva a property_patternbemeneti típusából. Ha a T null értékű típus, akkor a T0 annak alapul szolgáló típusa, ellenkező esetben a T0 egyenlő a Ttípussal.
Például a { Prop1.Prop2: pattern } mintázat pontosan olyan, mint a { Prop1: { Prop2: pattern } }.
Vegye figyelembe, hogy ez magában foglalja a null ellenőrzést, ha T null értékű érték vagy hivatkozástípus. Ez a null ellenőrzés azt jelenti, hogy az elérhető beágyazott tulajdonságok T0tulajdonságai lesznek, nem pedig T.
A tagok ismétlődő elérési útjai engedélyezettek. A mintaegyezés összeállítása kihasználhatja a minták gyakori részeit.
C# feature specifications