Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not
Bu makale bir özellik belirtimidir. Belirtim, özelliğin tasarım belgesi olarak görev alır. Önerilen belirtim değişikliklerini ve özelliğin tasarımı ve geliştirilmesi sırasında gereken bilgileri içerir. Bu makaleler, önerilen belirtim değişiklikleri son haline getirilene ve geçerli ECMA belirtimine dahil edilene kadar yayımlanır.
Özellik belirtimi ile tamamlanan uygulama arasında bazı tutarsızlıklar olabilir. Bu farklılıklar, dil tasarım toplantısının ilgili notlarındayer alır.
Özellik belirtimlerini C# dil standardına benimseme işlemi hakkında daha fazla bilgi edinmek için belirtimleri makalesinde bulabilirsiniz.
Şampiyon sorunu: https://github.com/dotnet/csharplang/issues/4394
Özet
Özellik alt formüllerinin iç içe üyelere başvurmasına izin ver, örneğin:
if (e is MethodCallExpression { Method.Name: "MethodName" })
Onun yerine:
if (e is MethodCallExpression { Method: { Name: "MethodName" } })
Motivasyon
Bir alt özelliği eşleştirmek istediğinizde, başka bir özyinelemeli deseni iç içe kullanmak, gerçek bir avantaj sağlamadan okunabilirliği bozacak gereksiz karmaşıklık ekler.
Ayrıntılı tasarım
property_pattern söz dizimi aşağıdaki gibi değiştirilir:
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
+ ;
Her ad araması için alıcı, property_pattern giriş türünden başlayarak T0 önceki üyenin türüdür. T bir null atanabilir türse, T0 onun temel türüdür; aksi takdirde, T0Tdeğerine eşittir.
Örneğin, form { Prop1.Prop2: pattern }
deseni { Prop1: { Prop2: pattern } }
ile tam olarak eşdeğerdir.
T, null olabilen bir değer türü veya başvuru türü olduğunda, bunun null kontrolünü içereceğini unutmayın. Bu null denetimi, mevcut iç içe geçmiş özelliklerin, T0'ün özellikleri olacağı, T'ün değil anlamına gelir.
Yinelenen üye yollarına izin verilir. Desen eşleştirme sürecinin derlenmesi, desenlerin ortak bölümlerinden faydalanabilir.
C# feature specifications