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, ilgili dil tasarım toplantısı (LDM) notlarında belirtilir.
Ö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/275
Özet
Lambdalar ve anonim yöntemler üzerinde, yerellerin veya örnek durumunun kapsamlar tarafından yakalanmasını engelleyen bir 'statik' değiştiriciye izin verin.
Motivasyon
Öngörülemeyen şekilde yakalanan nesnelerin tutulmasına veya ek ayırmalara neden olabilecek kapsayıcı bağlamdan istemeden durumu yakalamaktan kaçının.
Ayrıntılı tasarım
Lambda veya anonim bir yönteme static
değiştiricisi eklenebilir.
static
değiştirici, lambda veya anonim yönteminin statik anonim bir işlev olduğunu gösterir.
statik anonim işlev kapsayan kapsamdan durumu yakalayamaz.
Sonuç olarak, kapsayan kapsamdan yerel öğeler, parametreler ve this
statik anonim işleviçinde kullanılamaz.
statik anonim işlev, örtük veya açık bir this
ya da base
başvurusundan örnek üyelere başvuramaz.
statik anonim işlev kapsayan kapsamdan static
üyelerine başvurabilir.
statik anonim işlev kapsayan kapsamdan constant
tanımlara başvurabilir.
statik anonim işlevindekinameof()
, kapsayan kapsamdan gelen yerel değişkenlere, parametrelere veya this
ya da base
'e başvurabilir.
Kapsayan kapsamdaki private
üyeleri için erişilebilirlik kuralları, static
vestatic
olmayan anonim işlevler için aynıdır.
Meta verilerde statik anonim işlev tanımının static
yöntemi olarak yayılıp yayılmayacağı konusunda bir garanti yoktur. Bu, en iyi duruma getirmek için derleyici uygulamasına bırakılır.
static
olmayan bir yerel işlev veya anonim işlev, kapsayan statik anonim işlevden durumu yakalayabilir, ancak kapsayanstatik anonim işlevin dışında durum yakalayamaz.
Geçerli bir programdaki anonim bir işlevden static
değiştiricinin kaldırılması, programın anlamını değiştirmez.
C# feature specifications