Aracılığıyla paylaş


Genişletilmiş özellik desenleri

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.