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.
Bu makale aşağıdaki derleyici hatalarını ve uyarılarını kapsar:
- CS8108: Dinamik türdeki bağımsız değişken, yerel 'method' işlevinin 'parameter' adlı params parametresine geçirilemez.
- CS8112: 'method' yerel işlevi, 'static' 'extern' olarak işaretlenmediği için bir gövdeye sahip olmalıdır.
- CS8321: 'method' yerel işlevi bildirilir ancak hiçbir zaman kullanılmaz
- CS8421: Statik yerel işlev 'değişken' başvurusu içeremez.
- CS8422: Statik yerel işlev 'this' veya 'base' başvurusu içeremez.
C# 7.0'da yerel işlevler eklendi. Başka bir üyenin içinde yardımcı yöntemler tanımlamanıza olanak tanır. Bu makaledeki tanılamalar yerel işlev bildirimlerini, çağrıları, kullanımı ve yerel işlevler için static ek yakalama kısıtlamalarını kapsar.
Yerel işlev gövdeleri
- CS8112: 'method' yerel işlevi, 'static extern' olarak işaretlenmediği için bir gövde içermelidir.
Yerel işlev bildirimi, yerel işlev static extern olarak bildirilmedikçe bir gövde içermelidir. Yerel işleve bir blok gövdesi veya ifade gövdesi ekleyin. Uygulama dışarıdan sağlanıyorsa yerel işlevi static extern işaretleyin ve bildirimin dış yöntemler için kurallara uydığından emin olun.
Params parametreleri ve dinamik argümanlar
- CS8108: 'method' yerel işlevinin 'parameter' params parametresine dinamik türe sahip bağımsız değişken geçirilemez.
Yerel bir işlev çağrısı, dynamic parametresine params bağımsız değişkeni geçiremez. Değeri, çağrıdan önce parametresi tarafından beklenen öğe türüne veya dizi türüne params dönüştürün. Ayrıca, değerleri açıkça yazılan bir dizide depolayabilir ve bu diziyi yerel işleve geçirebilirsiniz.
Kullanılmayan yerel işlevler
- CS8321: 'method' yerel işlevi bildirilir ancak hiçbir zaman kullanılmaz
Derleyici, yerel bir işlev tanımladığınızda ancak ulaşılabilir hiçbir kod onu çağırmadığında bu uyarıyı verir. Kullanılmayan yerel işlevi kaldırın veya onu içeren üyeden çağırın. Yerel işlevi gelecekteki bir değişiklikte kullanmayı planlıyorsanız, gerekli olana kadar kaynaktan uzak tutun.
Statik yerel işlevler durumu yakalayamıyor
- CS8421: Statik yerel işlev 'değişken' başvurusu içeremez.
- CS8422: Statik yerel işlev 'this' veya 'base' başvurusu içeremez.
Bir static yerel işlev dış kapsamdaki durumu yakalayamaz.
this, this veya kendisi aracılığıyla dış kapsamdaki yerel değişkenlere, parametrelere ya da örnek üyelerine başvuruda bulunamaz. Yerel işlevin ihtiyaç duyduğu her değeri parametre olarak geçirin (CS8421, CS8422). Yerel işlevin dış kapsamdaki değişkenleri veya örnek durumunu yakalaması gerekiyorsa, static değiştiricisini kaldırın.
Aşağıdaki örnek, CS8422'ye neden olan referansları gösterir:
public class C
{
private int counter = 1;
public void IncreaseCounter()
{
static void LocalFunc(int addition)
{
this.counter += addition; // CS8422
base.ToString(); // CS8422
counter += addition; // CS8422: implicit this
ToString(); // CS8422: implicit base
}
LocalFunc(10);
}
}
CS8422'yi düzeltmek için gerekli örnek verilerini yerel işleve geçirin, yardımcıyı örnek bağlamı dışına taşıyın veya yerel işlevin örnek durumuna erişmesi gerektiğinde kaldırınstatic.
İlgili tanılamalar
- İfade ağaçlarındaki yerel işlevler hakkında daha fazla bilgi için bkz. C# derleyici iletilerindeki ifade ağaçlarında bazı ifadeler yasaktır .
- Genel tür parametrelerine sahip yerel işlevler hakkında daha fazla bilgi için bkz. C# derleyici iletilerindeki genel tür parametreleri ve tür bağımsız değişkenleriyle ilgili hataları ve uyarıları çözme .
- Yerel işlevlerdeki öznitelikler hakkında daha fazla bilgi için bkz. C# derleyici iletilerinde kodunuzda öznitelik bildirimi ve öznitelik kullanımını içeren hataları ve uyarıları çözme .
- Anonim işlevlerde yakalanan değişkenler hakkında daha fazla bilgi için bkz. C# derleyici iletilerinde Lambda ifade hataları ve uyarıları .
- Oluşturuculardaki ve birincil oluşturuculardaki yakalamalar hakkında daha fazla bilgi için bkz. C# derleyici iletilerinde oluşturucu bildirimleri ve modül başlatıcılarıyla ilgili hataları çözme .