Aracılığıyla paylaş


Parametre ve argüman uyuşmazlığı

Derleyici, resmi bir parametre için bağımsız değişken sağlanmadığında veya bağımsız değişken bu parametre için geçerli olmadığında aşağıdaki hataları oluşturur:

  • cs0182: Öznitelik bağımsız değişkeni, öznitelik parametre türüne ait sabit bir ifade, ifadesi veya dizi oluşturma ifadesi olmalıdır
  • CS0591: Öznitelik bağımsız değişkeni için geçersiz değer
  • CS0599: 'argument' adlı öznitelik bağımsız değişkeni için geçersiz değer
  • CS0617: Geçerli bir adlandırılmış öznitelik bağımsız değişkeni değil. Adlandırılmış öznitelik bağımsız değişkenleri, salt okunur, statik veya sabit olmayan alanlar ya da statik olmayan, genel erişime sahip okuma-yazma özellikleri olmalıdır.
  • CS0633: Özniteliğin bağımsız değişkeni geçerli bir tanımlayıcı olmalıdır
  • CS0643: Adlandırılmış öznitelik bağımsız değişkeni çoğalması
  • CS0655: Geçerli bir öznitelik parametre türü olmadığından geçerli bir adlandırılmış öznitelik bağımsız değişkeni değildir
  • CS0839: bağımsız değişken eksik.
  • CS1016: Adlandırılmış öznitelik bağımsız değişkeni bekleniyor
  • CS1739: için en iyi aşırı yükleme adlı bir parametreye sahip değil
  • CS1740: Adlandırılmış bağımsız değişken birden çok kez belirtilemez
  • cs1742: Bir dizi erişimi adlandırılmış bağımsız değişken tanımlayıcısına sahip olamayabilir
  • CS1744: Adlandırılmış bir bağımsız değişken, zaten bir konumsal bağımsız değişkenin verildiği bir parametreyi belirtir
  • CS1746: Temsilcinin 'name' adlı bir parametresi yok
  • CS7036: İstenen parametreye karşılık gelen bir bağımsız değişken verilmedi
  • CS7067: Öznitelik oluşturucu parametresi isteğe bağlıdır, ancak varsayılan parametre değeri belirtilmedi.
  • CS8324: Adlandırılmış bağımsız değişken belirtimleri, dinamik çağrıda tüm sabit bağımsız değişkenler belirtildikten sonra görünmelidir.
  • CS8905: İşlev işaretçisi adlandırılmış bağımsız değişkenlerle çağrılamaz.
  • CS8943: null geçerli bir parametre adı değil. Bir örnek yönteminin alıcısına erişmek için parametre adı olarak boş dizeyi kullanın.
  • CS8944: Yöntemi bir örnek yöntemi değildir, alıcı ilişkilendirilmiş dize işleyici bağımsız değişkeni olamaz.
  • CS8945: Geçerli bir parametre adı değil.
  • CS8948: InterpolatedStringHandlerArgumentAttribute bağımsız değişkenleri özniteliğin kullanıldığı parametreye başvuramaz.
  • cs8949: Parametreye uygulanan yanlış biçimlendirilmiş ve yorumlanamıyor. El ile bir örneğini oluşturun.
  • cs8950: Parametresi, parametredeki ilişkilendirilmiş dize işleyicisi dönüştürmesine yönelik bir bağımsız değişkendir, ancak karşılık gelen bağımsız değişken, ilişkilendirilmiş dize ifadesinin ardından belirtilir. Bağımsız değişkenleri yeniden sıralar.
  • CS8951: Parametre açıkça sağlanmaz, ancak ilişkilendirilmiş dize işleyici dönüşümünde bir bağımsız değişken olarak kullanılır.
  • CS8964: CallerArgumentExpressionAttribute yalnızca varsayılan değerleri parametrelere uygulanabilir
  • cs8965: Parametreye uygulanmış , öz göndergeli olduğu için hiçbir etkisi olmaz.
  • CS8966: İsteğe bağlı bağımsız değişkenlere izin verilmeyen bağlamlarda kullanılan bir üye için geçerli olduğundan CallerArgumentExpressionAttribute hiçbir etkisi olmaz

Eksik bağımsız değişken

Derleyici bağımsız değişkenleri tüm üye parametreleriyle eşleştiremiyorsa aşağıdaki genel hatalar verilir:

  • CS0839: Bağımsız değişken eksik.
  • CS7036: Gerekli parametreye karşılık gelen bağımsız değişken yoktur

Bu hatalar geneldir: Derleyici, yöntem çağrısında verilen bağımsız değişkenleri yöntemin gerekli parametreleriyle eşleştiremez. Aşağıdaki nedenleri denetleyin:

  • Gerekli tüm bağımsız değişkenleri eklediğinizden emin olun.
  • Bağımsız değişkenlerin doğru sırada olduğundan emin olun.
  • Tüm bağımsız değişkenlerin doğru türde olduğundan emin olun.
  • Aşırı yükleme çözümleme kurallarının beklediğiniz yöntemi seçtiğinden emin olun.

Aşırı yüklenmiş yerel işlevler yazdıysanız, CS7036 görebilirsiniz. Yerel işlevler aşırı yüklenemez. Derleyici yalnızca bu ada sahip ilk yerel işlevi tanır. Farklı bir yerel işlevi çağırmak istediğinizi denetleyin.

Bu hatalar genellikle doğru nedeni tanılamaya yardımcı olabilecek diğer tanılamalarla birlikte görünür.

Öznitelikler için gerekçeler

Derleyici, bir özellik oluşturanın bağımsız değişkeni yanlış olduğunda şu hataları oluşturur:

  • CS0182: Öznitelik bağımsız değişkeni, öznitelik parametre türünün sabit bir ifadesi, typeof ifadesi veya dizi oluşturma ifadesi olmalıdır
  • CS0591: Öznitelik bağımsız değişkeni için geçersiz değer
  • CS0599: Adlandırılmış öznitelik bağımsız değişkeni 'argument' için geçersiz değer
  • CS0617: Geçerli bir adlandırılmış öznitelik bağımsız değişkeni değil. Adlandırılmış öznitelik bağımsız değişkenleri salt okunur, statik veya sabit olmayan alanlar ya da statik olmayan ve genel olan okuma-yazma özellikleri olmalıdır.
  • CS0633: Öznetilik için bağımsız değişken geçerli bir tanımlayıcı olmalıdır
  • CS0643: Adlandırılmış öznitelik bağımsız değişkeni yinele
  • cs0655: geçerli bir öznitelik parametre türü olmadığından geçerli bir adlandırılmış öznitelik bağımsız değişkeni değil

öznitelik tanımınızda System.AttributeUsageAttribute kullanırsanız, izin verilen değerlerin birbirini dışlamadığından emin olun. Bu öznitelikteki bağımsız değişkenlerin türü ve sırasının doğru olup olmadığını kontrol edin. Dize argümanlarının metninin geçerli olup olmadığını kontrol edin. Birçok öznitelik için, bağımsız değişkenin geçerli bir C# tanımlayıcısı olması gerekir. Öznitelik oluşturucularına yönelik bağımsız değişkenler derleme zamanında sabit olmalıdır. Bu nedenle, sabit değerleri destekleyen türlerle sınırlıdır. Ayrıca, değişmez değer sabitlerine izin veren aşağıdaki türlere öznitelik parametresi olarak izin verilmez:

Aynı parametre adına sahip yinelenen adlandırılmış bağımsız değişkenler belirtemezsiniz. Erişilebilir özellikleri yalnızca bir özniteliği başlatırken ayarlayabilirsiniz. Özel özellikleri ayarlayamazsınız.

Adlandırılmış ve isteğe bağlı parametreler ve bağımsız değişkenler

Derleyici, adlandırılmış ve isteğe bağlı bağımsız değişkenlerin yanlış kullanımı için aşağıdaki hataları döndürür:

  • CS1016: Adlandırılmış öznitelik bağımsız değişkeni bekleniyor
  • CS1739: için en iyi aşırı yükleme, adında bir parametre içermiyor.
  • CS1740: adlı bağımsız değişken birden çok kez belirtilemez
  • CS1742: Dizi erişimi, adlandırılmış bağımsız değişken belirticisine sahip olmayabilir
  • CS1744: Adlandırılmış bağımsız değişkeni, konumsal bağımsız değişkenin zaten verilmiş olduğu bir parametreyi belirtir
  • CS1746: Temsilcinin 'name' adlı bir parametresi yok
  • CS7067: Öznitelik oluşturucu parametresi isteğe bağlıdır, ancak varsayılan parametre değeri belirtilmedi.
  • CS8324: Adlandırılmış bağımsız değişken belirtimleri, tüm sabit bağımsız değişkenler dinamik çağrıda belirtildikten sonra görünmelidir.
  • CS8905: İşlev işaretçisi adlandırılmış bağımsız değişkenlerle çağrılamaz.

Bu hataların aşağıdaki nedenlerini denetleyin:

  • Adlandırılmış bağımsız değişkenin parametre adı hatalı.
  • Seçilen aşırı yüklemenin adlandırılmış bağımsız değişkenle eşleşen bir parametresi yok.
  • Parametre adı birden fazla argümanda yinelenir.
  • Adlandırılmış bağımsız değişkenlerden sonra konumsal (adlandırılmamış) bir bağımsız değişken görüntülenir.
  • Dizi dizini parametreleri için adlandırılmış bağımsız değişkenlere izin verilmez.

Enterpolasyonlu dize işleyicisi

Derleyici, yanlış ilişkilendirmeli dize işleyicisi belirttiğinizde aşağıdaki hataları verir.

  • cs8943: null geçerli bir parametre adı değil. Bir örnek yönteminin alıcısına erişmek için parametre adı olarak boş dizeyi kullanın.
  • CS8944: Örnek metodu değil, alıcı enterpolasyonlu dize işleyici bağımsız değişkeni olamaz.
  • CS8945: Geçerli bir parametre adı değil.
  • CS8948: InterpolatedStringHandlerArgumentAttribute değişkenleri tanımlandığı parametreye başvuramaz.
  • CS8949: Parametreye uygulanan InterpolatedStringHandlerArgumentAttribute yanlış biçimlendirilmiş ve yorumlanamaz. Örneği el ile oluşturun.
  • CS8950: Parametresi, parametredeki birleştirilmiş dize işleyici dönüşümüne yönelik bir bağımsız değişkendir, ancak ilgili bağımsız değişken birleştirilmiş dize ifadesinden sonra belirtilmektedir.
  • CS8951: Parametresi açıkça sağlanmaz, ancak parametredeki ilişkilendirilmiş dize işleyicisi dönüştürmesine bağımsız değişken olarak kullanılır.

Interpolasyon dize işleyici, desen tabanlı bir yapıdır. Desenin doğru olması önemlidir. özellik belirtimine bakın veyailişkilendirilmiş dize işleyicisi oluşturma öğreticisini izleyin.

Arayan hata ayıklama bilgileri

Derleyici, System.Runtime.CompilerServices.CallerArgumentExpressionAttributeyanlış kullanımıyla ilgili olarak aşağıdaki hatayı döndürür:

  • CS8964: CallerArgumentExpressionAttribute yalnızca varsayılan değerlere sahip parametrelere uygulanabilir

Ayrıca, derleyici CallerArgumentExpressionAttributeyanlış kullanımıyla ilgili olarak aşağıdaki uyarıları yayınlar:

  • CS8965: Parametreye referans olan CallerArgumentExpressionAttribute kendi kendine olduğu için hiçbir etkisi olmayacaktır.
  • CS8966: İsteğe bağlı bağımsız değişkenlere izin verilmeyen bağlamlarda kullanılan bir üye için geçerli olduğundan CallerArgumentExpressionAttribute hiçbir etkisi olmaz

CallerArgumentExpression özniteliğine ek açıklama yapılmış tüm parametrelerin varsayılan değeri olmalıdır.