Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Notatka
Ten artykuł jest specyfikacją funkcji. Specyfikacja służy jako dokument projektowy dla funkcji. Zawiera proponowane zmiany specyfikacji wraz z informacjami wymaganymi podczas projektowania i opracowywania funkcji. Te artykuły są publikowane do momentu sfinalizowania proponowanych zmian specyfikacji i włączenia ich do obecnej specyfikacji ECMA.
Mogą wystąpić pewne rozbieżności między specyfikacją funkcji a ukończoną implementacją. Te różnice są uwzględnione w odpowiednich notatkach ze spotkania projektowania języka (LDM) .
Więcej informacji na temat procesu wdrażania specyfikacji funkcji można znaleźć w standardzie języka C# w artykule dotyczącym specyfikacji .
Problem z czempionem: https://github.com/dotnet/csharplang/issues/4394
Streszczenie
Zezwalaj podwzorcom wzorców właściwości na odwoływanie się do zagnieżdżonych elementów składowych, na przykład:
if (e is MethodCallExpression { Method.Name: "MethodName" })
Zamiast:
if (e is MethodCallExpression { Method: { Name: "MethodName" } })
Motywacja
Jeśli chcesz dopasować właściwość podrzędną, zagnieżdżanie innego cyklicznego wzorca powoduje dodanie zbyt dużego szumu, co zaszkodzi czytelności bez rzeczywistej korzyści.
Szczegółowy projekt
Składnia property_pattern jest modyfikowana w następujący sposób:
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
+ ;
Odbiornik dla każdej nazwy odnośnika jest typem poprzedniego elementu członkowskiego T0, począwszy od typu wejściowego property_pattern. Jeśli T jest typem dopuszczalnym wartości null, T0 jest jego typem bazowym, w przeciwnym razie T0 jest równy T.
Na przykład wzorzec formularza { Prop1.Prop2: pattern } jest dokładnie odpowiednikiem { Prop1: { Prop2: pattern } }.
Należy pamiętać, że będzie to kontrola wartości null, gdy T jest typem wartości dopuszczającej wartość null lub typem odwołania. To sprawdzanie wartości null oznacza, że dostępne właściwości zagnieżdżone będą właściwościami T0, a nie T.
Powtarzające się ścieżki składowe są dozwolone. Proces dopasowywania wzorców może wykorzystywać wspólne części wzorców.
C# feature specifications