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.
Derleyici, arabirimlerdeki statik soyut veya sanal üyelerin geçersiz bildirimleri için aşağıdaki hataları oluşturur:
- CS8920: Arabirim, tür bağımsız değişkeni olarak kullanılamaz. Statik üyenin arabirimde en özgül bir uygulaması bulunmamaktadır.
- CS8921: Tekli işlecin parametresi, içeren tür veya kendisinde kısıtlanmış tür parametresi olmalıdır.
-
CS8922:
++veya--işleci için parametre türü, içeren tür olmalı veya onunla kısıtlanmış bir tür parametresi olmalıdır. CS8923: veya işlecinin dönüş türü, ya parametre türüyle eşleşmeli ya da bu türden türetilmiş olmalıdır veya parametre türü başka bir tür parametresi değilse, içeren türün tür parametresi ile kısıtlanmış olmalıdır. - CS8924: İkili işlecin parametrelerinden biri, içeren tür veya bu işleçle kısıtlanmış tür parametresi olmalıdır.
- CS8925: Aşırı yüklenmiş bir kaydırma operatörünün ilk işleneni, içeren türle aynı türde olmalı veya bu türle kısıtlanmış bir tür parametresine sahip olmalıdır
- CS8926: Statik sanal veya soyut arabirim üyesine yalnızca tür parametresinde erişilebilir.
- CS8928: Tür statik arabirim üyesi uygulamaz. yöntemi, statik olmadığından arabirim üyesini uygulayamıyor.
- CS8930: Kullanıcı tanımlı işlecin açık uygulaması statik olarak bildirilmelidir
- CS8931: Bir arabirimdeki kullanıcı tanımlı dönüştürme, kapsayan türdeki bir tür parametresine veya bu parametreden kapsayan türe kısıtlanmış olarak dönüştürülmelidir
- CS8932: 'UnmanagedCallersOnly' yöntemi türdeki arabirim üyesini uygulayamıyor
- CS9044: Tür arabirim üyesi uygulamaz. Yöntem, erişilemeyen bir üyeyi örtük olarak uygulayamaz.
- CS9046: Bir arabirimde bildirilen eşitlik veya eşitsizlik işleci parametrelerinden biri, arabirimle kısıtlanmış bir tür parametresi olmalıdır
Bu hatalar kodunuzda üç yerde oluşur:
- Statik soyut veya sanal üyeleri olan bir arabirim bildirdiğinizde,
- Statik soyut veya sanal üyeler içeren bir arabirim uygulayan bir tür bildirdiğinizde ve
- Bir arabirimde bildirilen statik bir soyut veya sanal yönteme eriştiğinizde.
Arabirim bildirimindeki hatalar
Bir arabirimi static abstract veya static virtual üyeleriyle bildirdiğinizde aşağıdaki hatalarla karşılaşabilirsiniz.
- CS8921: Bir birli işlecin parametresi, içeren tür olmalı veya onunla kısıtlanmış tür parametresi olmalıdır.
-
CS8922:
++veya--işleci için parametre türü, içeren tür veya ona kısıtlanan tür parametresi olmalıdır. -
CS8923:
++veya--işleçlerinin dönüş türü, ya parametre türüyle eşleşmeli ya da parametre türünden türetilmelidir. Aksi takdirde, parametre türü farklı bir tür parametresi olmadığı sürece, içeren türün bu parametresi dönüş türüne kısıtlanmış olmalıdır. - CS8924: İkili işlecin parametrelerinden biri, içeren tür veya bu işleçle kısıtlanmış tür parametresi olmalıdır.
- CS8925: Aşırı yüklenmiş bir shift işlecinin ilk işleneni, içeren türle aynı türe veya bu türe kısıtlanmış bir tür parametresine sahip olmalıdır
- CS8931: Bir arabirimdeki kullanıcı tanımlı dönüştürme, kapsayıcı türdeki bir tür parametresine veya bu parametreden kapsayıcı türe kısıtlanmış olarak dönüştürülmelidir
- CS9046: Bir eşitlik veya eşitsizlik işlecinin arabirimde bildirilen parametrelerinden biri, arabirimle kısıtlanmış bir tür parametresi olmalıdır
Bir arabirimde bildirilen tekli işleçler için, parametrenin arabirim türünün kendisi veya arabirimi uygulamak için kısıtlanmış bir tür parametresi TT olduğundan emin olun (CS8921). Bu kısıtlama, işlecin yalnızca arabirimi uygulayan türlere uygulanabilmesini sağlayarak derleyicinin derleme zamanında doğru uygulamayı çözümlemesini sağlar.
Artım (++) ve azaltma (--) işleçleri için, parametresinin diğer birli işleçler (CS8922) ile aynı kurallara uyduğunu doğrulayın. Ayrıca, dönüş türü parametre türüyle eşleşmeli, ondan türetilmelidir veya arabirimin tür parametresi arabirimle (CS8923) kısıtlanmış olmalıdır. Bu kurallar, artırma ve azaltma işlemlerinin özgün değişkene geri atanabilecek uyumlu bir tür döndürmesini sağlar.
İkili işleçler için, iki parametreden en az biri, arabirimi uygulamak için kısıtlanmış arabirim türü veya tür parametresi olmalıdır (CS8924). Bu gereksinim, diğer parametrenin herhangi bir tür olmasını sağlar ve genel matematik senaryolarında olduğu gibi T operator +(T left, int right) işleçleri etkinleştirir.
Vardiya işleçleri (<< ve >>) için ilk işlenen, içeren tür veya kısıtlanmış tür parametresi (CS8925) olmalıdır. İkinci işlenen standart vardiya işleç kurallarına uyar ve genellikle intolur.
Kullanıcı tanımlı dönüştürme işleçleri için dönüştürme, kapsayan arabirim türüyle (CS8931) kısıtlanmış bir tür parametresi içermelidir. Arabirimdeki rastgele türler arasında dönüştürmeler tanımlayamazsınız; dönüştürme, arabirimini uygulayan türlerle ilişkilendirilmelidir.
Eşitlik (==) ve eşitsizlik (!=) işleçleri için, yalnızca arabirim türünün kendisi (CS9046) değil, arabirimle kısıtlanmış bir tür parametresi en az bir parametre olmalıdır. Eşitlik operatörleri için bu daha katı gereksinim, arabirim aracılığıyla örnekleri karşılaştırırken uygun tür güvenliği sağlar.
Arabirimlerdeki işleç bildirimlerinin kuralları hakkında daha fazla bilgi için bkz. arabirimlerdeki statik soyut üyeler. Bu desenleri uygulamaya yönelik pratik bir kılavuz için bkz. Statik soyut arabirim üyelerini keşfetme.
Arabirim bildirimi uygulama türündeki hatalar
static abstract veya static virtual yöntemleriyle bir arabirim uygulayan bir tür tanımlarken aşağıdaki hatalarla karşılaşabilirsiniz.
- CS8928: Tür statik arabirim üyesi uygulamaz. yöntemi, statik olmadığından arabirim üyesini uygulayamıyor.
- CS8930: Kullanıcı tanımlı işlecin açık uygulaması statik olarak bildirilmelidir
- CS8932: 'UnmanagedCallersOnly' yöntemi türdeki arabirim üyesini uygulayamıyor
- CS9044: Tür arabirim üyesi uygulamaz. Yöntem, erişilemeyen bir üyeyi örtük olarak uygulayamaz.
Statik bir soyut veya statik sanal arabirim üyesi uyguladığınızda, değiştiriciyi (static) kullanarak uygulama yöntemini bildirin. Örnek yöntemleri tarafından uygulanan örnek arabirimi üyelerinden farklı olarak, çalışma zamanı bunları bir örnekte değil türün kendisinde çağırdığından statik soyut üyeler statik uygulamalar gerektirir.
Kullanıcı tanımlı işleçlerin bir arabirimden açık uygulamaları için, değiştiriciyi static uygulamaya (CS8930) ekleyin. İşleçlerin açık arabirim uygulamaları, örtük uygulamalarla aynı statik gereksinimi izler.
System.Runtime.InteropServices.UnmanagedCallersOnlyAttribute Arayüz üyesi (CS8932) uygulayan herhangi bir yöntemden özniteliği kaldırın. Bu öznitelik kullanılarak işaretlenen yöntemler yalnızca yönetilmeyen koddan çağrılabilir ve çalışma zamanının bunları arabirim dağıtma mekanizması aracılığıyla çağırması gerektiğinden arabirim uygulamasına katılamaz.
Uygulayan yöntemin arabirim üyesinden daha kısıtlayıcı erişilebilirliği varsa (örneğin, arabirim üyesi uygulayan bir privateinternal veya public yöntemi), örtük uygulama (CS9044) yerine açık arabirim uygulama söz dizimini kullanın. Örtük uygulama, uygulayan üyenin en az uyguladığı arabirim üyesi kadar erişilebilir olmasını gerektirir.
Arabirim üyelerini uygulama hakkında daha fazla bilgi için bkz. Arabirimler ve açık arabirim uygulaması.
Statik soyut arabirim üyelerini çağırma hataları
Bir arabirimin static abstract veya static virtual üyesi olarak tanımlanan bir üyeyi çağırmaya çalıştığınızda aşağıdaki hataları görebilirsiniz:
- CS8920: Arabirim tür bağımsız değişkeni olarak kullanılamaz. Statik üyenin arabirimde en spesifik bir uygulaması yoktur.
- CS8926: Statik sanal veya soyut arabirim üyesine yalnızca tür parametresinde erişilebilir.
Tür bağımsız değişkeni olarak statik soyut üyeleri olan bir arabirim kullandığınızda, tüm statik soyut üyelerin en belirli bir uygulamaya (CS8920) sahip olduğundan emin olun. Derleyici hangi uygulamanın kullanılacağını belirleyemediğinde, genellikle birden çok arabirim hiyerarşisi çakışan varsayılan uygulamalar sağladığından veya hiçbir uygulama mevcut olmadığından bu hatayı görürsünüz.
Statik soyut veya statik sanal arabirim üyelerine, doğrudan arabirim türü (CS8926) yerine arabirimi uygulamak için kısıtlanmış bir tür parametresi aracılığıyla erişin. Örneğin, T'in where T : IMyInterface tarafından kısıtlandığı durumlarda T.MemberName kullanın, IMyInterface.MemberName yerine. Derleyicinin çağrılacak uygulamayı çözümlemek için somut bir türe ihtiyacı vardır ve kısıtlanmış tür parametresi, genel özelleştirme aracılığıyla derleme zamanında bu somut türü sağlar.
Statik soyut üyelere erişme hakkında daha fazla bilgi için bkz. arabirimlerdeki statik soyut üyeler.