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ı kapsar:
- CS0071: Bir olayın açık arabirim uygulaması olay erişimcisi söz dizimini kullanmalıdır.
- CS0106: Değiştirici bu öğe için geçerli değil.
- CS0277: Üye, public olmadığından bir arabirim üyesini uygulamaz.
- CS0425: yöntemin tür parametresi kısıtlamaları, arabirim yönteminin tür parametresi kısıtlamalarıyla eşleşmelidir. Bunun yerine açık bir arabirim uygulaması kullanmayı göz önünde bulundurun.
- CS0460: Geçersiz kılma ve açık arabirim uygulama yöntemlerine yönelik kısıtlamalar temel yöntemden devralınır, bu nedenle 'sınıf' veya 'yapı' kısıtlaması dışında doğrudan belirtilemezler.
- CS0470: Yöntem, tür için arabirim erişimcisini uygulayamıyor. Açık bir arabirim uygulaması kullanın.
- CS0473: Açık arabirim uygulaması 'yöntem adı' birden fazla arabirim üyesiyle eşleşir. Hangi arabirim üyesinin seçildiği uygulamaya bağımlıdır. Bunun yerine açık olmayan bir uygulama kullanmayı göz önünde bulundurun.
- CS0531: Arayüz üyelerinin tanımı yapılmamalıdır.
- CS0535: Üye, arabirim üyesini uygulamıyor.
- CS0538: Açık arabirim beyanındaki üye bir arabirim değil.
- CS0539: Açık arabirim bildirimindeki üye, uygulanabilecek arabirimin üyeleri arasında bulunamadı.
- CS0540: İçeren tür arabirim üyesini uygulamıyor.
- CS0541: Açık arabirim bildirimi yalnızca bir sınıfta, kayıtta, yapıda veya arabirimde bildirilebilir.
- CS0550: Üye, arabirim üyesinde bulunmayan bir erişimci ekler.
- CS0551: Açık arabirim uygulamasında bir erişim yöntemi eksik.
- CS0630: Üye, __arglist parametresi olduğundan arabirim üyesini uygulayamaz.
- CS0686: Erişimci arabirim üyesini uygulayamaz. Açık bir arabirim uygulaması kullanın.
- CS0736: Üye örnek arabirimi üyesini uygulamaz. Statik olduğundan arabirim üyesini uygulayamaz.
- CS0737: Üye arabirim üyesini uygulayamıyor. Ortak olmadığı için arabirim üyesini uygulayamaz.
- CS0738: Üye arabirim üyesi uygulamaz. Eşleşen dönüş türü olmadığından yapamaz.
- CS8705: Arabirim üyesinin en özel uygulaması yok. Hiçbir üye en özel değildir.
- CS8854: Üye, arabirim üyesini uygulamıyor.
- CS9333: Parametre türü uygulanan üyeyle eşleşmelidir.
- CS9334: Dönüş türü uygulanan üyeyle eşleşmelidir.
Arabirim bildirimi ve söz dizimi
Aşağıdaki hatalar, açık arabirim uygulamaları bildirildiğinde doğru söz dizimi ve yapısıyla ilgilidir:
- CS0071: Bir olayın açık arabirim uygulaması olay erişimcisi söz dizimini kullanmalıdır.
- CS0106: Değiştirici bu öğe için geçerli değil.
- CS0531: Arayüz üyelerinin tanımları yapılamaz.
- CS0538: Açık arabirim bildirimi içindeki üye, bir arabirim değildir.
- CS0541: Açık arabirim bildirimi yalnızca bir sınıfta, kayıtta, yapıda veya arabirimde bildirilebilir.
Aşağıdaki teknikleri kullanarak bu hataları düzeltebilirsiniz:
- Bir arabirim olayını (CS0071) açıkça uygularken
addveremoveolay erişimcilerini el ile sağlamanız gerekir. Derleyici, açık arabirim uygulamaları için bu erişimcileri otomatik olarak oluşturmaz, bu nedenle olayın nasıl depolandığını ve yönetileceğini belirtmek için bunları açıkça tanımlamanız gerekir. - Değiştiriciyi
publicaçık arabirim uygulamalarından (CS0106) kaldırın. Açık arabirim uygulamaları, arabirim türü aracılığıyla erişildiğinde örtük olarak public olur, bu dapublicanahtar sözcüğünü gereksiz kılar ve bu bağlamda kullanımı uygun değildir. - Değiştiriciyi
abstractaçık arabirim uygulamalarından (CS0106) kaldırın. Açık arabirim uygulamaları gerçek uygulamayı sağlar ve türetilmiş sınıflarda geçersiz kılınamadığından soyut olarak işaretlenemez. - Yöntem gövdesini arabirim üyesi bildirimlerinden kaldırın veya uygulamayı arabirimi (CS0531) uygulayan bir sınıfa veya yapıya taşıyın. C# 8.0'dan önce, arabirim üyeleri uygulama içeremezdi; C# 8.0 ile başladığınızda, belirli bir söz dizim kullanarak varsayılan arabirim yöntemlerini sağlayabilirsiniz.
- Açık arabirim bildiriminde belirtilen türün gerçek bir arabirim türü (CS0538) olduğunu doğrulayın. Açık arabirim uygulama söz diziminde yalnızca arabirim türleri kullanılabilir; bir sınıf veya arabirim olmayan başka bir tür kullanmaya çalışmak, açık uygulama kurallarını ihlal eder.
- Açık arabirim bildirimlerini, arabirimi temel listesinde (CS0541) bildiren bir sınıfa veya yapıya taşıyın. Açık arabirim uygulamaları bir sınıfın veya yapı türünün gövdesinde görünmelidir ve ad alanı düzeyinde veya diğer bağlamlarda bildirılamaz.
Daha fazla bilgi için bkz. Arabirimler, Açık Arabirim Uygulaması ve Arabirim olaylarını uygulama.
Dönüş türleri ve imzalar
Uygulayan yöntemin imzası arabirim üyesi bildirimiyle eşleşmediğinde aşağıdaki hatalar oluşur:
- CS0738: Üye, arabirim üyesini uygulamaz, çünkü eşleşen dönüş türüne sahip değildir.
- CS8854: Üye arabirim üyesi uygulamaz.
- CS9333: Parametre türü uygulanan üyeyle eşleşmelidir.
- CS9334: Dönüş türü uygulanan üyeyle eşleşmelidir.
Aşağıdaki teknikleri kullanarak bu hataları düzeltebilirsiniz:
- Uygulayan yöntemin dönüş türünü arabirim üyesinde bildirilen dönüş türüyle (CS0738, CS9334) tam olarak eşleşecek şekilde değiştirin. Yöntem imzası hangi arabirim üyesinin uygulandığını belirleyen sözleşmenin bir parçası olduğundan, uygulamanın imzası arabirim bildirimiyle tam olarak eşleşmelidir.
- Uygulama yöntemindeki parametre türlerinin arabirim üyesinde (CS9333) bildirilen parametre türleriyle tam olarak eşleştiğinden emin olun. Parametre türleri, derleyicinin arabirim üyeleriyle uygulamaları eşleştirmek için kullandığı yöntem imzasının temel bileşenleri olduğundan, her parametrenin arabirim bildiriminde belirtilen aynı türde olması gerekir.
- Arabirim özelliği bir
initayarlayıcı bildirdiğinde (CS8854), uygulayan özelliğe biriniterişimci ekleyin.initanahtar sözcüğü, nesne oluşturma sırasında özellik başlatmaya izin verirken daha sonra değişikliği engeller ve uygulayan özelliğin arabirim sözleşmesini karşılamak için aynı yalnızca başlatma davranışını sağlaması gerekir.
Daha fazla bilgi için bkz. Arabirimler, Özellikler ve Yalnızca başlatma ayarlayıcıları.
Eksik veya tamamlanmamış uygulamalar
Bir sınıf bir arabirimi tam olarak uygulamadığında veya arabirim sözleşmesiyle eşleşmeyen üyeler uyguladığında aşağıdaki hatalar oluşur:
- CS0535: Üye, arabirim üyesini uygulamıyor.
- CS0550: Üye, arabirim üyesinde bulunmayan bir erişimci ekler.
- CS0551: Açık arabirim uygulamasında bir erişimci eksik.
Aşağıdaki teknikleri kullanarak bu hataları düzeltebilirsiniz:
- Arabirimde bildirilen her üye için bir uygulama sağlayın veya türünü olarak
abstractbildirin (CS0535). Arabirim gereksinimlerini karşılamak için her üyenin uygulanması gerekir. - Arabirim özelliğinde (CS0550) bildirilmeyen tüm erişimcileri uygulama özelliğinden kaldırın. Uygulama özelliği yalnızca arabirim tanımında açıkça bildirilen erişimcileri içerebilir ve uygulamanın arabirim sözleşmesinin belirttiğinden daha fazla işlevsellik eklemediğinden emin olabilir.
- Arabirim bildirimiyle (CS0551) eşleşmesi için tüm gerekli erişimcileri açık arabirim uygulamasına ekleyin. Uygulamanın arabirim tarafından tanımlanan tüm erişimci sözleşmesini yerine getirmesi gerektiğinden, arabirimde bildirilen her erişimcinin eşleşen imzalarla uygulamada karşılık gelen bir erişimcisi olmalıdır.
Daha fazla bilgi için bkz. Arabirimler ve Özellikler.
Üye eşleştirme ve sorun çözme
Arabirimde mevcut olmayan arabirim üyelerini uygulamaya çalışıldığında veya kapsayan tür arabirimi bildirmediğinde aşağıdaki hatalar oluşur:
- CS0539: Açık arabirim bildirimindeki üye, uygulanabilecek arabirimin üyeleri arasında bulunamadı.
- CS0540: Türü içeren sınıf arabirim üyesini uygulamaz.
Aşağıdaki teknikleri kullanarak bu hataları düzeltebilirsiniz:
- Açık arabirim uygulamasındaki üye adının ve imzanın arabirimde bildirilen bir üyeyle tam olarak eşleşip eşleşmediğini doğrulayın veya yanlış uygulamayı (CS0539) kaldırın. Uygulamayı gerçekleştirmeye çalıştığınız üyenin, arabirim tanımında ismi, dönüş türü ve parametre türleriyle eşleşen bir şekilde gerçekten var olması gerekir çünkü açık arabirim uygulaması, arabirim sözleşmesiyle tam bir uyum olmasını gerektirir.
- Arabirimi sınıfın veya yapının temel listesine ekleyin veya açık arabirim uygulamasını (CS0540) kaldırın. Bir tür yalnızca devralma listesinde bildirmiş olduğu arabirimlerin üyelerini açıkça uygulayabilir, bu nedenle uygulayan türün açık uygulamalar sağlayabilmesi için önce arabirim ilişkisini kurması gerekir.
Daha fazla bilgi için bkz. Arabirimler ve Açık Arabirim Uygulaması.
Genel tür kısıtlamaları
Tür parametresi kısıtlamalarına sahip genel arabirim yöntemleri uygulanırken aşağıdaki hatalar oluşur:
- CS0425: yöntemin tür parametresi kısıtlamaları, arabirim yönteminin tür parametresi kısıtlamalarıyla eşleşmelidir. Bunun yerine açık bir arabirim uygulaması kullanmayı göz önünde bulundurun.
- CS0460: Geçersiz kılma ve açık arabirim uygulama yöntemlerine yönelik kısıtlamalar temel yöntemden devralınır, bu nedenle 'sınıf' veya 'yapı' kısıtlaması dışında doğrudan belirtilemezler.
Aşağıdaki teknikleri kullanarak bu hataları düzeltebilirsiniz:
-
whereUygulama yöntemindeki yan tümcesinin arabirim yöntemi bildirimiyle aynı olduğundan veya kısıtlamaların anlamsal anlamıyla (CS0425) eşleştiğinden emin olun. Uygulamadaki tür parametresi kısıtlamaları, arabirimde veya temel yöntemde tanımlananlarla eşleşmelidir. - Geçersiz kılma ve açık arabirim uygulama yöntemlerinden (CS0460) açık kısıtlama bildirimlerini kaldırın. Geçersiz kılma yöntemi, kısıtlamalarını temel veya arabirim yönteminden otomatik olarak devralır, bu nedenle bunları yeniden tanımlamak gereksizdir ve yalnızca C# 8 ve sonraki sürümlerde izin verilen belirli istisnai durumlarda buna izin verilir.
- Belirsizlikleri çözmek için C# 9 veya üzerini (CS0460) kullanırken geçersiz kılma ve açık arabirim uygulamalarında null atanabilir başvuru türleriyle
defaultkısıtlamayı uygulayın. Bu kısıtlama devralma kuralına istisna, null atanabilir notasyon bağlamlarını netleştirmek için varsayılan kısıtlamayı açıkça belirtmenize olanak tanır. - tr-TR: C# 8 veya üzerini kullanırken null yapılabilir başvuru türü ek açıklamalarını (CS0460) etkinleştirmek için geçersiz kılma ve açık arabirim uygulama yöntemlerinde
where T : classveyawhere T : structkısıtlamalarını açıkça belirtin. Bu belirli kısıtlamaların başvuru veya değer türleriyle kısıtlanmış tür parametrelerinde null atanabilir başvuru türü analizini desteklemesine izin verilir.
Daha fazla bilgi için bkz. Tür parametreleri üzerindeki kısıtlamalar, Arabirimler ve Null atanabilir başvuru türleri.
Yöntem görünürlüğü ve değiştiricileri
Yanlış erişilebilirlik veya değiştiricileri olan arabirim yöntemleri uygulanırken aşağıdaki hatalar oluşur:
- CS0736: Üye örnek arabirimi üyesini uygulamaz. Statik olduğundan arabirim üyesini uygulayamaz.
- CS0737: Üye arabirim üyesini uygulamıyor. Üye, genel olmadığı için arabirim üyesini uygulayamaz.
Aşağıdaki teknikleri kullanarak bu hataları düzeltebilirsiniz:
- Değiştiriciyi
static, arabirim üyesini (CS0736) uygulayan yöntem bildiriminden kaldırın. C# 10'da arabirim üyeleri statik üyeler değil örnek üyeleridir. -
publicErişim değiştiricisini arabirim üyesini (CS0737) uygulayan yönteme ekleyin. Arabirimler genel davranışı tanımlayan bir sözleşme olduğu için, tüm arabirim üyeleri örtülü olarakpublicolur, bu yüzden uygulayıcı yöntemin arabirim referansı yoluyla erişilebilir olması için genel erişime açık olması gerekir.
Daha fazla bilgi için bkz. Arabirimler ve Erişim Değiştiricileri.
Erişimci uygulaması ve çakışmaları
Görünürlük sorunları veya adlandırma çakışmaları olan erişimci yöntemleriyle arabirim özellikleri veya olayları uygulanırken aşağıdaki hatalar oluşur:
- CS0277: Üye, ortak olmadığından arabirim üyesi uygulamaz.
- CS0470: Yöntem, tür için arabirim erişimcisini uygulayamıyor. Açık bir arabirim uygulaması kullanın.
- CS0686: Erişimci arabirim üyesini uygulayamaz. Açık bir arabirim uygulaması kullanın.
Aşağıdaki teknikleri kullanarak bu hataları düzeltebilirsiniz:
- Görünürlüğü
public'den daha az olan özellik erişimcilerinden erişim değiştiricilerini kaldırın veya eksik olanpublicdeğiştiricisini ekleyin (CS0277). Tüm arabirim üyeleri örtük olarakpublickabul edilir, bu nedenle uygulayan erişimcinin de arabirim sözleşmesini karşılamak ve arabirim türü aracılığıyla erişilebilir olmak için genel erişime sahip olması gerekir. - Açık arabirim uygulaması (CS0470) kullanarak, erişimci benzeri adlara sahip yöntemleri (örneğin
get_PropertyName) uygun özellik söz dizimi ile değiştirin. Derleyici, özellikler için dahili olarak erişim yöntemleri oluşturur ve bu ayrılmış adlarla elle yöntem oluşturmaya çalışmak özellik uygulama mekanizmasıyla çakışır. - Arabirim otomatik olarak oluşturulan erişimci yöntemleriyle (CS0686) eşleşen yöntem adları içerdiğinde adlandırma çakışmalarını çözmek için açık arabirim uygulama söz dizimini kullanın. Derleyici, özellikler için
get_Propertyveset_Property, olaylar içinadd_Eventveremove_Eventgibi yöntemleri otomatik olarak oluşturur. Bu nedenle, bir arabirim açıkça bu tam adlara sahip yöntemler bildirirse, arabirim yöntemi ile derleyici tarafından oluşturulan erişimci arasındaki karışıklığı gidermek için açık bir uygulama gerekir.
Daha fazla bilgi için bkz. Arabirimler, Özellikler ve Olaylar.
Belirsiz ve çelişkili uygulamalar
Derleyici hangi arabirim uygulamasının kullanılacağını belirleyemezse aşağıdaki hatalar oluşur:
- CS0473: Açık arabirim uygulaması 'yöntem adı' birden fazla arabirim üyesiyle eşleşir. Hangi arabirim üyesinin seçildiği uygulamaya bağımlıdır. Bunun yerine açık olmayan bir uygulama kullanmayı göz önünde bulundurun.
- CS8705: Arabirim üyesi 'member' en spesifik bir uygulamaya sahip değil. Hiçbiri en spesifik değildir.
Aşağıdaki teknikleri kullanarak bu hataları düzeltebilirsiniz:
- Açık arabirim uygulamasını ortadan kaldırın ve bunun yerine her iki arabirim yöntemi (CS0473) için tek bir örtük genel uygulama kullanın. Genel bir yöntem, genel olmayan bir yöntemle aynı imzaya sahip olduğunda (örneğin, hem
TestMethod(int)hem deTestMethod(T)aynı hale geldiğindeITest<int>'yi uygularken), ortak dil altyapısı meta veri sistemi, hangi arabirim üyesinin hangi uygulama yuvasına bağlandığını kesin olarak belirleyemez, bu nedenle örtük uygulamanın kullanılması, tek bir yöntemin her iki arabirim gereksinimini de karşılamasına olanak tanır. - Birden çok varsayılan uygulama (CS8705) arasındaki belirsizliği çözen uygulama sınıfında veya yapısında açık bir uygulama sağlayın. Bu hata genellikle bir sınıfın aynı üye için varsayılan uygulamalar sağlayan birden çok arabirim uyguladığı elmas devralma desenleriyle oluşur. Derleyici, hangi uygulamanın kullanılacağını açıkça belirtmeniz veya kendi uygulamanızı sağlamanız gerekir.
- Birden çok arabirimin aynı üye (CS8705) için varsayılan uygulamaları sağladığı elmas devralma çakışmalarını önlemek için arabirim hiyerarşisini yeniden yapılandırın. Arabirim ilişkilerini yeniden tasarlayarak veya varsayılan uygulamaları tek bir arabirimde birleştirerek, derleyicinin en belirli uygulamayı belirlemesini engelleyen belirsizliği ortadan kaldırabilirsiniz.
Daha fazla bilgi için bkz. Arabirimler ve Varsayılan Arabirim Yöntemleri.
Özel uygulama kısıtlamaları
Arabirim uygulamasıyla uyumlu olmayan özel parametre türleri kullanılırken aşağıdaki hata oluşur:
- CS0630: __arglist parametresi olduğundan üye, arabirim üyesini uygulayamaz.
Aşağıdaki teknikleri kullanarak bu hatayı düzeltebilirsiniz:
- parametresini
__arglistuygulayan yöntemden (CS0630) kaldırın.__arglistanahtar sözcüğü, yöntemlerin değişken sayıda bağımsız değişkeni yönetilmeyen bir şekilde kabul etmesine olanak tanır, ancak arabirim anlaşmaları derleme zamanında doğrulanabilen öngörülebilir, tür açısından güvenli imzalar gerektirdiğinden bu özellik arabirim uygulamasıyla uyumsuzdur. - parametresini
__arglistdeğişken uzunluklu bağımsız değişken listeleri (params) için bir dizi parametresiyle değiştirin. anahtar sözcüğünden__arglistfarklı olarakparams, arabirim uygulamasıyla tam olarak uyumlu değişken sayıda bağımsız değişkeni kabul etmek için tür açısından güvenli bir mekanizma sağlar ve arabirimlerin gerektirdiği derleme zamanı türü güvenliğini korur.
Daha fazla bilgi için bkz. Arabirimler ve params anahtar sözcüğü.