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.
Genişletilmiş
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ınilgili notlarında kayıt altına alınır.
Özellik belirtimlerini C# dil standardına benimseme işlemi hakkında daha fazla bilgi edinmek için
Şampiyon sorunu: https://github.com/dotnet/csharplang/issues/373
Özet
Bir yöntem veya parametredeki bir öznitelik içinde nameof(parameter)'a izin verin.
Örneğin:
[MyAttribute(nameof(parameter))] void M(int parameter) { }[MyAttribute(nameof(TParameter))] void M<TParameter>() { }void M(int parameter, [MyAttribute(nameof(parameter))] int other) { }
Motivasyon
NotNullWhen veya CallerExpression gibi özniteliklerin parametrelere başvurması gerekir, ancak bu parametreler şu anda kapsam içinde değildir.
Ayrıntılı tasarım
yöntemin
Yöntem bildirimi parametreler, tür parametreleri ve yerel değişkenler için ayrı bir bildirim alanı oluşturur. Adlar, türü parametre listesi ve yöntemin resmi parametre listesi ve yöntemin bloğundaki yerel değişken bildirimleri tarafından bu bildirim alanına eklenir.
İsimler, yöntemin veya parametrelerinin üzerinde belirtilen niteliklerdeki nameof ifadelerinde, yöntemin tür parametre listesi ve formal parametre listesi aracılığıyla bu bildirim alanına tanıtılır.
[...]
Bir yöntemin bloğunda, simple_name ifadelerde (Basit adlar) tanımlayıcıları tarafından resmi parametrelere başvurulabilir.
Yöntem veya parametrelerine yerleştirilen özniteliklerdeki bir nameof ifadesinde, resmi parametrelere simple_name ifadelerindeki tanımlayıcıları ile başvurulabilir.
Anonim işlevin parametrelerinin kapsamı, anonim işleve veyaparametrelerine yerleştirilen özniteliklerdeki anonymous_function_body (§7.7)
nameofparametrelerine yerleştirilen özniteliklerdeki ifadeler .
simple_name, I tek bir tanımlayıcı ve I<A1,...,Ak> isteğe bağlı bir Iolduğu <A1,...,Ak> biçiminde veya biçimindedir. hiçbir type_argument_list belirtilmediğinde, K sıfır olarak düşünün.
simple_name değerlendirilir ve aşağıdaki gibi sınıflandırılır:
-
Ksıfırsa ve simple_name bir bloğun içinde görünüyorsa ve bloğun (veya kapsayan bloğun) yerel değişken bildirim alanı (Bildirimler) adıIolan bir yerel değişken, parametre veya sabit içeriyorsa, simple_name bu yerel değişkene, parametreye veya sabite başvurur ve değişken veya değer olarak sınıflandırılır. -
Ksıfırsa ve simple_name genel yöntem bildiriminin gövdesinde görünüyorsa ve bu bildirimIadlı bir tür parametresi içeriyorsa, simple_name bu tür parametresine başvurur. -
Ksıfırsa ve simple_name yöntem bildirimindeki veya parametrelerindeki öznitelikteki birnameofifadesi içinde görünüyorsa ve bu bildirimde adıIolan bir parametre veya tür parametresi varsa, simple_name bu parametreye veya tür parametresine başvurur. - Aksi takdirde, her örnek türü için şu şekilde işlem yapılır: Öncelikle, hemen kapsayan tür bildiriminin örnek türünden başlanır ve varsa, her bir kapsayan sınıf veya yapı bildiriminin örnek türüyle devam edilir. Bu işlem,
T(Örnek türü) ile gerçekleştirilir.
[...] - Aksi takdirde,
Niçin, simple_name'nin oluştuğu ad alanıyla başlayan, her kapsayıcı ad alanını (varsa) takip eden ve küresel ad alanıyla biten her ad alanı için bir varlık bulunana kadar aşağıdaki adımlar değerlendirilir:
[...] - Aksi takdirde, simple_name tanımlanmamıştır ve derleme zamanı hatası oluşur.
- type_parameter_list ile bildirilen bir tür parametresinin kapsamı, yöntem bildiriminde veya parametrelerinin özniteliklerinde geçen ve
nameofifadeleridir. - bir method_declaration (Yöntemler) içinde bildirilen bir parametrenin kapsamı, yöntem bildiriminde veya parametrelerindeki bir öznitelikte bu method_declaration ve ifadelerinin
nameof.
İlgili spesifikasyon bölümleri
C# feature specifications