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:
- CS0181: Öznitelik oluşturucu parametresi geçerli bir öznitelik parametre türü olmayan bir türe sahiptir
- CS0243: Koşullu öznitelik geçersiz kılma yöntemi olduğundan 'method' üzerinde geçerli değil.
- CS0404: Öznitelik bu bildirim türünde geçerli değil.
- CS0415: Bu öznitelik yalnızca açık arabirim üyesi bildirimi olmayan bir dizin oluşturucuda geçerlidir.
- CS0416: 'tür parametresi': öznitelik bağımsız değişkeni tür parametrelerini kullanamaz.
- CS0447: Öznitelik tür bağımsız değişkenleriyle kullanılamaz.
- CS0577: Koşullu öznitelik bir oluşturucu, yıkıcı, işleç, lambda ifadesi veya açık arabirim uygulaması olduğundan geçerli değil.
- CS0578: Dönüş türü geçersiz olmadığından Koşullu öznitelik 'function' üzerinde geçerli değil.
- CS0579: Yinelenen öznitelik
- CS0582: Koşullu öznitelik arabirim üyelerinde geçerli değil.
- CS0592: Öznitelik bu bildirim türünde geçerli değil. Yalnızca belirli bildirimlerde geçerlidir.
- CS0609: Geçersiz kılma olarak işaretlenen bir dizin oluşturucuda öznitelik ayarlanamıyor.
- CS0616: Tür bir öznitelik sınıfı değil
- CS0625: StructLayout(LayoutKind.Explicit) ile işaretlenmiş türlerdeki örnek alanının FieldOffset özniteliği olmalıdır.
- CS0629: Koşullu üye 'üye', 'Tür Adı' türündeki 'temel sınıf üyesi' arabirim üyesini uygulayamaz.
- CS0636: FieldOffset özniteliği yalnızca StructLayout(LayoutKind.Explicit) ile işaretlenmiş türlerin üyelerine yerleştirilebilir.
- CS0637: Statik veya sabit alanlarda FieldOffset özniteliğine izin verilmez.
- CS0641: Bu öznitelik yalnızca System.Attribute'tan türetilen sınıflarda geçerlidir.
- CS0646: Dizin oluşturucu içeren bir tür üzerinde DefaultMember özniteliği belirtilemez.
- CS0647: Öznitelik yayımlama hatası
- CS0653: Soyut olduğundan 'class' öznitelik sınıfı uygulanamıyor.
- CS0657: Konum, bu bildirim için geçerli bir öznitelik konumu değil. Bu bildirim için geçerli öznitelik konumları listelenir. Bu bloktaki tüm öznitelikler yoksayılır.
- CS0658: Konum tanınan bir öznitelik konumu değil. Bu bildirim için geçerli öznitelik konumları listelenir. Bu bloktaki tüm öznitelikler yoksayılır.
- CS0668: İki dizin oluşturucunun adları farklı; IndexerName özniteliği bir tür içindeki her dizin oluşturucuda aynı adla kullanılmalıdır
- CS0685: Koşullu üye 'member' bir out parametresine sahip olamaz.
- CS0735: TypeForwardedTo özniteliği için bağımsız değişken olarak geçersiz tür belirtildi
- CS0739: Yinelenen TypeForwardedToAttribute
- CS1608: C# türlerinde RequiredAttribute özniteliğine izin verilmiyor
- CS1614: Öznitelik adı belirsiz. '@name' kullanın veya açıkça 'Attribute' sonekini ekleyin.
- CS1618: Koşullu özniteliği olduğundan veya geçersiz kıldığını bir yöntem olduğundan, yöntemiyle temsilci oluşturulamıyor
- CS1667: Özellik veya olay erişimcilerinde öznitelik geçerli değil. Yalnızca belirli bildirimlerde geçerlidir.
- CS1689: Öznitelik yalnızca yöntemler veya öznitelik sınıflarında geçerlidir
- CS7014: Öznitelikler bu bağlamda geçerli değildir.
- CS7046: Öznitelik parametresi belirtilmelidir.
- CS7047: 'parameter1' veya 'parameter2' öznitelik parametresi belirtilmelidir.
- CS7067: Öznitelik oluşturucu parametresi isteğe bağlıdır, ancak varsayılan parametre değeri belirtilmedi.
- CS8959: Type1 ile type2 arasındaki standart dönüştürmeler olmadığından CallerArgumentExpressionAttribute uygulanamıyor
- CS8960: Parametresine uygulanan CallerArgumentExpressionAttribute'un hiçbir etkisi olmaz. CallerLineNumberAttribute tarafından geçersiz kılınmış.
- CS8961: Parametresine uygulanan CallerArgumentExpressionAttribute'un hiçbir etkisi olmaz. CallerFilePathAttribute tarafından geçersiz kılınmış.
- CS8962: Parametresine uygulanan CallerArgumentExpressionAttribute'un hiçbir etkisi olmaz. CallerMemberNameAttribute tarafından geçersiz kılındı.
- CS8963: Parametresine uygulanan CallerArgumentExpressionAttribute'un hiçbir etkisi olmaz. Geçersiz parametre adıyla uygulanır.
- CS8968: Öznitelik tipi argümanı tür parametrelerini kullanamaz
- CS8970: Meta verilerde temsil edilemediği için tür bu bağlamda kullanılamaz.
- CS9331: Öznitelik el ile uygulanamaz.
Öznitelik argümanları ve parametreleri
Öznitelik bağımsız değişkenlerini veya parametrelerini yanlış kullandığınızda aşağıdaki hataları görürsünüz:
- CS0181: Öznitelik oluşturucu parametresi geçerli bir öznitelik parametre türü olmayan bir türe sahiptir
- CS0416: 'tür parametresi': öznitelik bağımsız değişkeni tür parametrelerini kullanamaz.
- CS0447: Öznitelik tür bağımsız değişkenleriyle kullanılamaz.
- CS0647: Öznitelik yayma hatası
- CS7046: Öznitelik parametresi belirtilmelidir.
- CS7047: 'parameter1' veya 'parameter2' öznitelik parametresi belirtilmelidir.
- CS7067: Öznitelik oluşturucu parametresi isteğe bağlıdır, ancak varsayılan parametre değeri belirtilmedi.
- CS8968: Bir öznitelik türü argümanı tür parametrelerini kullanamaz
- CS8970: Meta verilerde temsil edilemediği için tür bu bağlamda kullanılamaz.
Bu hataları düzeltmek için şu kuralları izleyin:
- Öznitelik oluşturucu parametreleri geçerli öznitelik parametre türlerini (CS0181) kullanmalıdır. C# dil belirtimi, öznitelik parametre türlerini ilkel türler (
bool,byte,char, ,double,float,int,long,shortvestring),object,System.Typesabit listesi türleri ve bu türlerdeki tek boyutlu dizilerle kısıtlar. İşlev işaretçileri ve meta verilerde temsil edilebilen diğer türler geçerli öznitelik parametre türleri değildir. - Öznitelik bağımsız değişkenleri derleme zamanı sabit değerleri olmalıdır, bu nedenle tür parametrelerini öznitelik bağımsız değişkenleri (CS0416) olarak kullanamazsınız. Derleyicinin derleme zamanında öznitelik bağımsız değişkenlerini çözümlemesi gerekir ve genel tür oluşturulduğundaya kadar tür parametreleri bilinmez.
- Tür bağımsız değişkenlerini genel olmayan bir özniteliğe (CS0447) uygulayamazsınız. Öznitelik sınıfı genel değilse, kullanımında köşeli ayraç içinde tür argümanları bulunamaz.
- Bir öznitelik oluşturucuya geçirilen tüm değerler doğru biçimlendirilmelidir ve her parametre için geçerli aralık içinde olmalıdır (CS0647). Örneğin, bir GuidAttribute geçerli bir GUID biçim dizesi gerektirir.
- özniteliğini uygularken gerekli tüm öznitelik parametrelerini sağlamanız gerekir (CS7046, CS7047). Hangi parametrelerin zorunlu olduğunu belirlemek için özniteliğin oluşturucu imzasını denetleyin ve her parametre için geçerli bağımsız değişkenler sağlayın.
- İsteğe bağlı oluşturucu parametreleriyle özel bir öznitelik tanımladığınızda, bu parametreler için varsayılan değerleri (CS7067) belirtin. Çağırıcıların bu bağımsız değişkenleri atlamaları için nitelik kurucusunda
parameterType parameterName = defaultValuesöz dizimini kullanın. - Genel öznitelik türü bağımsız değişkenleri somut türler olmalı, tür parametreleri (CS8968) değil. Derleyicinin derleme zamanında genel öznitelik türü bağımsız değişkenlerini tam olarak belirlemesi gerekir, bu nedenle açık tür parametrelerine izin verilmez.
- Öznitelik bağımsız değişkenleri olarak kullanılan türler meta verilerde (CS8970) gösterilebilir olmalıdır.
dynamicveya belirli küme öğe adları gibi bazı yapılandırılmış türler, meta verilerde kodlanamaz ve öznitelik türü bağımsız değişkenleri olarak kullanılmalarına izin verilmez.
Daha fazla bilgi için özniteliklerle ilgili Öznitelikler, Genel değerler ve C# dil belirtimi bölümüne bakın.
Uyarı
CS0447 ve CS0647 kullanım dışıdır. Geçerli derleyici bu hataları oluşturmaz.
Öznitelik sınıfı gereksinimleri
Gerekli kısıtlamaları karşılamayen öznitelik sınıflarını tanımlarken aşağıdaki hataları görürsünüz:
- CS0404: Öznitelik bu bildirim türünde geçerli değil.
- CS0579: Yinelenen öznitelik
- CS0616: Tür bir öznitelik sınıfı değil
- CS0641: Bu öznitelik yalnızca System.Attribute'tan türetilen sınıflarda geçerlidir.
- CS0653: Soyut olduğundan 'class' öznitelik sınıfı uygulanamıyor.
- CS1614: Öznitelik adı belirsiz. '@name' kullanın veya açıkça 'Öznitelik' sonekini ekleyin.
Bu hataları düzeltmek için şu kuralları izleyin:
- Öznitelikleri yalnızca özniteliğin AttributeUsageAttribute izin verdiği bildirim türlerine (CS0404) uygulayın. Hangi hedeflerin
AttributeTargetsgeçerli olduğunu görmek için öznitelikteAttributeUsagebelirtilen değeri denetleyin. - Aynı özniteliği tek bir hedefe birden çok kez uygularsanız, yinelenen öğeyi kaldırın veya özniteliğin
AllowMultiple = true(AttributeUsageAttribute) içinde ayarlayın. Varsayılan olarak, öznitelikler her hedefte yalnızca bir kez görünebilir. - Öznitelik söz diziminde kullanılan tür System.Attribute (CS0616) öğesinden devralınmalıdır. Yalnızca 'den
System.Attributetüretilen sınıflar öznitelik olarak kullanılabilir. Benzer ada sahip diğer türler bile bu hataya neden olur. - Yalnızca
Attributesınıflarından türetilmiş olanlara AttributeUsageAttribute uygulayabilirsiniz (CS0641).AttributeUsageözniteliği, diğer özniteliklerin nasıl kullanıldığını denetler ve kendisi öznitelik sınıfları ile sınırlıdır. - Öznitelik sınıfları, derleyicinin bunların örneğini oluşturması gerektiğinden (
abstract) olamaz. Değiştiriciyiabstractöznitelik sınıfından kaldırın veya soyut temelden somut bir sınıf türetin. - Hem
Examplehem deExampleAttributeöznitelik sınıfları mevcut olduğunda, derleyici hangisine[Example]atıfta bulunduğunu (CS1614) karar veremez. Belirsizliği gidermek için kısa ad için[@Example], uzun ad için[ExampleAttribute]kullanın.
Daha fazla bilgi için öznitelikler hakkında özel öznitelikler oluşturma ve C# dil belirtimi bölümüne bakın.
Öznitelik yerleşimi bağlamı
Öznitelikleri geçersiz konumlara uyguladığınızda veya yanlış hedef tanımlayıcıları kullandığınızda aşağıdaki hatalar oluşur:
- CS0592: Öznitelik bu bildirim türünde geçerli değil. Yalnızca belirli bildirimlerde geçerlidir.
- CS0657: Konum, bu bildirim için geçerli bir öznitelik konumu değil. Bu bildirim için geçerli öznitelik konumları listelenir. Bu bloktaki tüm öznitelikler yoksayılır.
- CS0658: Konum tanınan bir öznitelik konumu değil. Bu bildirim için geçerli öznitelik konumları listelenir. Bu bloktaki tüm öznitelikler yoksayılır.
- CS1667: Özellik veya olay erişimcilerinde öznitelik geçerli değil. Yalnızca belirli bildirimlerde geçerlidir.
- CS7014: Öznitelikler bu bağlamda geçerli değildir.
Bu hataları düzeltmek için bu kuralları izleyin. Daha fazla bilgi için öznitelik belirtiminin Öznitelik Hedefleri ve C# dil belirtimi bölümüne bakın.
- Her özniteliğin AttributeUsageAttribute hedeflediği bildirim türlerini belirtir. Özniteliği yalnızca bu türlere (CS0592) uygulamanız gerekir. Örneğin, ile
AttributeTargets.Interfacetanımlanan bir özniteliği bir sınıfa uygulayamazsınız. - veya
method:gibiproperty:bir öznitelik hedef tanımlayıcısı kullandığınızda, tanımlayıcının göründüğü bildirim için geçerli olması gerekir (CS0657). Belirli bir bildirim için hangi hedef tanımlayıcılara izin verildiğinden emin olmak için hata iletisini denetleyin. - Kullandığınız öznitelik hedef tanımlayıcısı tanınan bir tanımlayıcı değil (CS0658). Geçerli tanımlayıcılar arasında
assembly:, ,module:type:,method:,property:, ,field:,event:,param:vereturn:bulunur. - ObsoleteAttribute ve CLSCompliantAttribute gibi bazı öznitelikler, özellik veya olay erişimcilerinde (CS1667) geçerli değildir. Niteleyiciyi doğrudan erişimciden özelliğe veya olay bildiriminin kendisine taşıyın.
- Öznitelikler yalnızca bunları destekleyen program öğelerinde (CS7014) görüntülenebilir. Derleme düzeyi veya modül düzeyi öznitelikleri uyguluyorsanız,
assembly:veyamodule:hedef tanımlayıcılarını kullanarak bunları dosyanın en üstüne yerleştirin.
Önceden tanımlanmış öznitelikler
Önceden tanımlanmış belirli .NET özniteliklerini yanlış kullandığınızda aşağıdaki hatalar oluşur:
- CS0415: Bu öznitelik yalnızca açık arabirim üyesi bildirimi olmayan bir dizin oluşturucuda geçerlidir.
- CS0609: Geçersiz kılma olarak işaretlenen bir dizin oluşturucuda öznitelik ayarlanamıyor.
- CS0625: StructLayout(LayoutKind.Explicit) ile işaretlenmiş türlerdeki örnek alanının FieldOffset özniteliği olmalıdır.
- CS0636: FieldOffset özniteliği yalnızca StructLayout(LayoutKind.Explicit) ile işaretlenmiş türlerin üyelerine yerleştirilebilir.
- CS0637: Statik veya sabit alanlarda FieldOffset özniteliğine izin verilmez.
- CS0646: Dizin oluşturucu içeren bir tür üzerinde DefaultMember özniteliği belirtilemez.
- CS0668: İki dizin oluşturucunun adları farklı; IndexerName özniteliği bir tür içindeki her dizin oluşturucuda aynı adla kullanılmalıdır
- CS0735: TypeForwardedTo özniteliği için bağımsız değişken olarak geçersiz tür belirtildi
- CS0739: Yinelenen TypeForwardedToAttribute
- CS1608: C# türlerinde RequiredAttribute özniteliğine izin verilmiyor
- CS9331: Öznitelik el ile uygulanamaz.
Bu hataları düzeltmek için bu kuralları izleyin. Daha fazla bilgi için bkz. Dizin Oluşturucular, Yapı türleri, TypeForwardedToAttribute ve Platform Çağırma (P/Invoke).
- IndexerNameAttribute yalnızca açık arabirim üyesi bildirimleri (CS0415) olmayan dizin oluşturuculara uygulanabilir. Arabirim dizin oluşturucu adını zaten tanımladığından, açık arabirim dizin oluşturucularından özniteliğini kaldırın.
- Geçersiz kılma yapılan dizin oluşturucular adlarını temel sınıftan devraldığından,
overrideile işaretlenen dizin oluşturucularaIndexerNameuygulayamazsınız (CS0609). Geçersiz kılma dizin oluşturucusununIndexerNameözniteliğini kaldırın. -
StructLayout(LayoutKind.Explicit)ile işaretlenmiş bir türdeki her örnek alanının, bir FieldOffsetAttributeCS0625 olması gerekir. Açık düzen, her örnek alanı için bayt uzaklığını belirtmenizi gerektirir. -
FieldOffsetAttribute yalnızca StructLayoutAttribute'i
LayoutKind.Explicitolarak ayarlanmış türlerin üyelerine yerleştirilebilir (CS0636). özniteliğiniStructLayoutiçeren tür bildirimine ekleyin. - Açık düzen yalnızca örnek alanlarına uygulandığından
veya alanlarında özniteliğine izin verilmez ( CS0637 ).FieldOffsetÖzniteliği statik veya sabit alandan kaldırın. - Derleyici dizin oluşturuculu türler için varsayılan üyeyi otomatik olarak tanımladığından zaten dizin oluşturucu içeren bir türe uygulayamazsınız DefaultMemberAttribute (CS0646).
DefaultMemberözniteliğini kaldırın. - Bir türdeki tüm IndexerNameAttribute öznitelikler aynı adı (CS0668) belirtmelidir. Çalışma zamanı bir türdeki tüm dizin oluşturucular için tek bir ad kullandığından adları eşleşecek şekilde değiştirin.
- TypeForwardedToAttribute için belirtilen türün, genel olmayan, iç içe olmayan, işaretçi olmayan ve dizi olmayan bir tür olması gerekir (CS0735). Yalnızca en üst düzey adlandırılmış türler geçerli iletme hedefleridir.
- Bir derleme, her dış tür için yalnızca bir TypeForwardedToAttribute içerebilir (CS0739). Yinelenen
TypeForwardedTobildirimi bulun ve kaldırın. - RequiredAttributeAttribute C# (CS1608) içinde tanımlanan türlerde izin verilmez. Bu öznitelik, derleyicileri belirli bir özelliği gerektirmeye zorlaması gereken diğer diller için ayrılmıştır.
- Bazı öznitelikler derleyici için ayrılmıştır ve kaynak kodunda (CS9331) el ile uygulanamaz. özniteliğini, derleyicinin oluşturmasına neden olan eşdeğer C# dili söz dizimi ile değiştirin.
Koşullu öznitelik kullanımı
aşağıdaki hataları, kullanım kısıtlamalarını ihlal eden yollarla uyguladığınızda ConditionalAttribute görürsünüz:
- CS0243: Koşullu öznitelik geçersiz kılma yöntemi olduğundan 'method' üzerinde geçerli değil.
- CS0577: Koşullu öznitelik bir oluşturucu, yıkıcı, işleç, lambda ifadesi veya açık arabirim uygulaması olduğundan geçerli değil.
- CS0578: Dönüş türü geçersiz olmadığından Koşullu öznitelik 'function' üzerinde geçerli değil.
- CS0582: Koşullu öznitelik arabirim üyelerinde geçerli değil.
- CS0629: Koşullu üye 'üye', 'Tür Adı' türündeki 'temel sınıf üyesi' arabirim üyesini uygulayamaz.
- CS0685: Koşullu üye 'member', bir out parametresine sahip olamaz.
- CS1618: Bir yöntemin veya onun geçersiz kıldığı bir yöntemin Koşullu özniteliğe sahip olması nedeniyle, yöntemle temsilci oluşturulamıyor
- CS1689: Öznitelik yalnızca yöntemler veya öznitelik sınıflarında geçerlidir
Bu hataları düzeltmek için bu kuralları izleyin. Daha fazla bilgi için bkz ConditionalAttribute. , Koşullu yöntemler ve Öznitelikler.
- Derleyici, çağrıları geçersiz kılmaya değil temel yöntem bildirimine bağlar, bu nedenle özniteliği
Conditionalyöntemlerine (CS0243) uygulayamazsınız.Conditionalözniteliğini geçersiz kılma yönteminden kaldırın veyaoverrideanahtar sözcüğünü kaldırın. -
ConditionalÖzniteliği oluşturucular, sonlandırıcılar, işleçler, lambda ifadeleri veya açık arabirim uygulamalarında (CS0577) geçerli değildir. Türün yaşam döngüsünde veya sözleşmesinde gerekli rollere sahip olduklarından bu üye türleri koşullu olarak atlanamaz. - Koşullu yöntemlerin
döndürmesi gerekir çünkü derleyici çağrıyı tamamen atlayabilir ve bu durumda çağıran için hiçbir dönüş değeri kullanılabilir olmaz ( CS0578 ). Yöntemin dönüş türünü olarakvoiddeğiştirin veya özniteliğiniConditionalkaldırın. - Tüm arabirim üyelerinin uygulanması gerektiğinden arabirim üyeleri koşullu olamaz (CS0582).
Conditionalarabirim üyesi bildiriminden özniteliğini kaldırın. - Arabirim sözleşmesi tüm derlemelerde (CS0629) bulunmalarını gerektirdiğinden, arabirim üyelerini uygulayan yöntemler koşullu olamaz.
Conditionalözniteliğini uygulayan yöntemden kaldırın. - Koşullu yöntemler, derleyici yöntem çağrısını CS0685 atladığında
outparametreleri olamaz çünküoutdeğişken değeri tanımsız olur. yöntemindenoutparametreleri kaldırın veya özniteliğiniConditionalkaldırın. - Koşul simgesinin tanımlanmadığı derlemelerde (CS1618) yöntem bulunmayabileceği için koşullu yönteme başvuran bir temsilci oluşturamazsınız. özniteliğini
Conditionalyönteminden kaldırın veya temsilci hedefi olarak kullanmayın. -
ConditionalÖznitelik yalnızca yöntemler ve öznitelik sınıflarında (CS1689) geçerlidir. Öznitelik olmayan sınıflar, yapılar veya arabirimler gibi diğer bildirim türlerinde geçerli değildir.
CallerArgumentExpression öznitelik kullanımı
CallerArgumentExpressionAttribute'yi yanlış uyguladığınızda veya diğer çağıran bilgi öznitelikleriyle çakıştığında aşağıdaki hatalar ortaya çıkar:
- CS8959: Type1 ile type2 arasındaki standart dönüştürmeler olmadığından CallerArgumentExpressionAttribute uygulanamıyor
- CS8960: Parametresine uygulanan CallerArgumentExpressionAttribute'un hiçbir etkisi olmaz. CallerLineNumberAttribute tarafından geçersiz kılınmış.
- CS8961: Parametresine uygulanan CallerArgumentExpressionAttribute'un hiçbir etkisi olmaz. CallerFilePathAttribute tarafından geçersiz kılınmış.
- CS8962: Parametresine uygulanan CallerArgumentExpressionAttribute'un hiçbir etkisi olmaz. CallerMemberNameAttribute tarafından geçersiz kılındı.
- CS8963: Parametresine uygulanan CallerArgumentExpressionAttribute'un hiçbir etkisi olmaz. Geçersiz parametre adıyla uygulanır.
Bu hataları düzeltmek için bu kuralları izleyin. Daha fazla bilgi için Arayan bilgileri öznitelikleri ve CallerArgumentExpressionAttribute'e bakın.
- Türü
stringveyastring'den standart bir dönüştürme ile bir tür olmalıdır çünkü öznitelik, çağıranın bağımsız değişken ifadesinin (CS8959) birstringgösterimini ekler. Parametre türünüstringveya uyumlu bir türe değiştirin. - özniteliğinin
CallerArgumentExpression, CallerLineNumberAttributeveya CallerFilePathAttribute (CallerMemberNameAttribute, CS8962) olan bir parametre üzerinde hiçbir etkisi yoktur. Bu çağıran bilgi öznitelikleri önceliklidir, bu nedenleCallerArgumentExpressionözniteliğini parametresinden kaldırın. - Oluşturucuya geçirilen string bağımsız değişkeni,
CallerArgumentExpression, aynı yöntem tanımında başka bir parametrenin adıyla eşleşmelidir (CS8963). Parametre adı yanlış yazılmışsa veya var olmayan bir parametreye başvuruyorsa, özniteliğin hiçbir etkisi yoktur.