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:
- CS0031: Sabit değer 'value' bir 'türe' dönüştürülemez
- CS0056: Tutarsız erişilebilirlik: 'type' dönüş türü 'operator' işlecinden daha az erişilebilir
- CS0057: Tutarsız erişilebilirlik: 'type' parametre türü 'operator' işlecinden daha az erişilebilir
- CS0215: True veya False işlecinin dönüş türü bool olmalıdır
- CS0216: 'operator' işleci için eşleşen bir 'missing_operator' işleci de tanımlanmış olmalıdır
- CS0217: Kısa devre işleci olarak uygulanabilmesi için kullanıcı tanımlı mantıksal işlecin ('operator') 2 parametresinin türüyle aynı dönüş türüne sahip olması gerekir.
- CS0218: Tür ('type') true ve false operatör bildirimlerini içermelidir
- CS0220: İşlem, denetimli modda derleme zamanında taşma yapıyor
- CS0221: Sabit değer 'değer', 'tür'e dönüştürülemez (bunu geçersiz kılmak için 'unchecked' söz dizimini kullanın)
-
CS0448:
++veya--işleci için dönüş türü, içeren tür olmalı veya içeren türden türetilmiş olmalıdır. - CS0463: Ondalık sabit ifadesinin değerlendirmesi şu hatayla başarısız oldu: 'error'
- CS0543: 'numaralandırma' : numaralandırıcı değeri türüne sığamayacak kadar büyük
- CS0552: 'dönüştürme yordamı' : kullanıcı tanımlı arabirime/arabirimden dönüştürme
- CS0553: 'dönüştürme yordamı' : temel sınıfa kullanıcı tanımlı dönüştürme
- CS0554: 'dönüştürme yordamı' : türetilmiş sınıfa/sınıftan kullanıcı tanımlı dönüştürme
- CS0555: Kullanıcı tanımlı işleç, kapsayan türden bir nesneyi alamaz ve kapsayan türün bir nesnesine dönüştüremez
- CS0556: Kullanıcı tanımlı dönüştürme, kapsayan türe veya bu türe dönüştürülmelidir
- CS0557: Türde yinelenen kullanıcı tanımlı dönüştürme
- CS0558: Kullanıcı tanımlı işleç statik ve genel olarak bildirilmelidir
-
CS0559:
++veya--işleci için parametre türü, içeren tür olmalıdır - CS0562: Birli işlecin parametresi, içeren tür olmalıdır
- CS0563: İkili işlecin parametrelerinden biri, içeren tür olmalıdır
- CS0564: Aşırı yüklenmiş vardiya işlecinin ilk işleneni, içeren türle aynı türde olmalı ve ikinci işlenenin türü int olmalıdır
- CS0567: Arabirimler işleç içeremez
- CS0590: Kullanıcı tanımlı işleçler geçersiz döndüremez
- CS0594: Kayan nokta sabiti 'tür' türü aralığının dışında
- CS0652: İntegral sabiti karşılaştırması işe yaramaz; sabit 'tür' türü aralığının dışındadır
- CS0659: 'class' Object.Equals(object o) öğesini geçersiz kılar ancak Object.GetHashCode() öğesini geçersiz kılmaz
-
CS0660: Tür,
operator ==veyaoperator !=tanımlar ancakObject.Equals(object o)geçersiz kılmaz. -
CS0661: Tür,
operator ==veyaoperator !=tanımlıyor ancakObject.GetHashCode()aşmıyor - CS0715: Statik sınıflar kullanıcı tanımlı işleçler içeremez
- CS1021: İntegral sabiti çok büyük
- CS1037: Aşırı yüklenebilir operatör bekleniyor
- CS1553: Bildirim geçerli değil; 'değiştirici işleç <dest-type> (...' kullanın yerine
- 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
- CS8778: Sabit değer 'value', çalışma zamanında 'type' aşabilir (geçersiz kılmak için 'unchecked' sözdizimini kullanın)
- CS8973: İşlem çalışma zamanında taşabilir (geçersiz kılmak için 'işaretsiz' söz dizimini kullanın)
- CS9023: İşleç kontrol edilemez duruma getirilemez.
- CS9024: İşleç kontrolsüz hale getirilemez.
- CS9025: İşleç, aynı zamanda kontrol edilmemiş eşleşen bir sürümün de bildirilmesi gerekir.
- CS9027: Beklenmeyen 'unchecked' anahtar sözcüğü.
- CS9308: Kullanıcı tanımlı işleç genel olarak bildirilmelidir.
- CS9310: Bu işlecin dönüş türü geçersiz olmalıdır.
- CS9311: Tür arayüz üyesini uygulamıyor. Tür, biri işleç olmadığından üyeyi uygulayamıyor.
- CS9312: Tür devralınan üyeyi geçersiz kılamaz çünkü bunlardan biri işleç değildir.
- CS9313: Aşırı yüklenmiş bileşik atama işleci bir parametre alır.
- CS9340: İşleç işlenenlere uygulanamaz. En yakın uygulanamaz aday gösterilir.
- CS9341: İşleç işlenene uygulanamaz. En yakın uygulanamayan aday gösterilir.
- CS9342: aşağıdaki üyeler arasında işleç çözümlemesi belirsizdir.
İşleç imzası gereksinimleri
-
CS0448:
++veya--işlecinin dönüş türü, içeren tür veya içeren türden türetilmiş olmalıdır. -
CS0559:
++veya--işleci için parametre türü, içeren tür olmalıdır. - CS0562: Birli işlecin parametresi, içeren tür olmalıdır.
- CS0563: İkili işlecin parametrelerinden biri, içeren tür olmalıdır.
- CS0564: Aşırı yüklenmiş kaydırma operatörünün ilk işlecinin türü içeren türle aynı olmalı ve ikinci işlecinin türü int olmalıdır.
- CS0567: Arayüzler işleç içeremez.
- CS0590: Kullanıcı tanımlı işleçler void döndüremez.
- CS9310: Bu işlecin dönüş türü geçersiz olmalıdır.
- CS9340: Operatör, operatörler üzerinde uygulanamaz. En yakın uygulanamaz aday gösterilmektedir.
- CS9341: İşleç işlenene uygulanamaz. En yakın uygulanabilir aday gösterilir.
- CS9342: İşleç çözümlemesi, aşağıdaki üyeler arasında belirlenemiyor.
Her işleç türünün, dil belirtimi tarafından tanımlanan belirli parametre ve dönüş türü gereksinimleri vardır. İşleçlerin aşırı yüklenebileceği kuralların tamamı için bkz. C# belirtiminde İşleç aşırı yüklemesi ve İşleçler .
-
++veya--işleçlerinin dönüş türünü, içeren türle veya ondan türetilen bir türle (CS0448) değiştirin. Dil, artım ve azaltma işleçlerinin içeren türle uyumlu bir değer döndürmesini gerektirir, böylece sonuç aynı değişkene yeniden atanabilir. -
++veya--işleçlerinin parametresini, içeren türle (CS0559) değiştirin. Artım ve azaltma işleçleri kendi türündeki örnekler üzerinde çalışmalıdır. - Tekli işlecin parametresini içeren türle değiştirin (CS0562). Tekli işleçler, bunları bildiren türün işlenenini kabul etmelidir.
- İkili işlecin en az bir parametresinin içeren tür olduğundan emin olun (CS0563). İkili işleçler, derleyicinin bunları bu tür aracılığıyla çözümleyebilmesi için bildirim türünü içermelidir.
- Shift işlecinin ilk parametresini kapsayan türe, ikinci parametreyi ise
int(CS0564) olarak değiştirin. Dil, belirli bir imzaya sahip vardiya işleçlerini tanımlar: kaydırılan tür ve bir tamsayı kaydırma miktarı. - İşleç bildirimlerini arabirimlerin dışına ve sınıflara veya yapılara (CS0567) taşıyın. Arabirimlerde geleneksel (statik olmayan soyut) işleç bildirimlerine izin verilmez. Arabirimlerdeki statik soyut işleçler için bkz. Statik soyut ve sanal arabirim üyesi hataları.
- İşlecin dönüş türünü geçersiz olmayan bir türle (CS0590) değiştirin. Kullanıcı tanımlı işleçlerin çoğu bir değer döndürmelidir. İstisna, dönüş türü gerektiren (
void) bileşik atama işleçleridir. - Derleyicinin çağrı noktasında kullanılan operatör türleri (CS9340, CS9341) için eşleşen bir işleç bulabilmesi için parametre türlerini düzeltin veya eksik işleç aşırı yüklemelerini ekleyin. Geçerli işleç olmadığında, derleyici uyuşmazlığı tanılamaya yardımcı olacak en yakın adayı gösterir.
- Çağrı sitesine açık atamalar ekleyin veya birden çok işleç aşırı yüklemesi eşit derecede iyi eşleştiğinde belirsizliği ortadan kaldırmak için daha belirli aşırı yüklemeler sağlayın (CS9342).
Önemli
Statik ikili işleçler ve karşılık gelen örnek bileşik atama işleçleri için imza gereksinimleri farklıdır. İmzanın istediğiniz bildirimle eşleştiğinden emin olun.
İşleç bildirimi gereksinimleri
- CS0558: Kullanıcı tanımlı işleç statik ve genel olarak bildirilmelidir.
- CS0715: Statik sınıflar kullanıcı tanımlı işleçler içeremez.
- CS1037: Aşırı yüklenebilir işleç bekleniyor.
- CS1553: Bildirim geçerli değil; bunun yerine 'değiştirici işleç <dest-type> (...' kullanın.
- CS9308: Kullanıcı tanımlı işleç genel olarak bildirilmelidir.
Dil, işleç bildirimleri için belirli değiştiriciler ve söz dizimi gerektirir. Kuralların tamamı için bkz . İşleç aşırı yüklemesi ve Kullanıcı tanımlı dönüştürme işleçleri.
- hem
statichem depublicdeğiştiricilerini işleç bildirimine (CS0558, CS9308) ekleyin. C# dili, kullanıcı tanımlı tüm işleçlerin hem statik hem de genel olmasını gerektirir, böylece örnek olmadan erişilebilir ve çağrılabilir. - İşleç bildirimini statik bir sınıftan statik olmayan bir sınıfa veya yapıya (CS0715) taşıyın. Statik sınıfların örnekleri yoktur, bu nedenle kullanıcı tanımlı işleçler (bu işleçler, kendi içeren türlerinin örnekleri üzerinde çalışır) statik sınıflarda anlamlı değildir.
- Geçersiz işleç simgesini geçerli bir aşırı yüklenebilir işleç (CS1037) ile değiştirin. Yalnızca dil tarafından tanımlanan belirli işleçler aşırı yüklenebilir.
- Gerekli dönüştürme işleci formunu izlemek için söz dizimini düzeltin:
public static implicit operator <dest-type>(<source-type> parameter)veyapublic static explicit operator <dest-type>(<source-type> parameter)(CS1553). Derleyici, dönüştürme işleçlerinin belirli bir bildirim desenini izlemesini bekler.
Statik soyut arabirimlerdeki işleçlerin açık arabirim uygulamalarıyla ilgili hatalar için bkz. Statik soyut ve sanal arabirim üyesi hataları.
Tutarsız erişilebilirlik
- CS0056: Tutarsız erişilebilirlik: 'type' geri dönüş türü 'işleç' işlecinden daha düşük erişilebilirliğe sahip.
- CS0057: Tutarsız erişilebilirlik: 'type' parametre türü 'operator' işlecinden daha az erişilebilir.
Ortak operatörün imzasında kullanılan tüm türler en az operatörün kendisi kadar erişilebilir olmalıdır. Kuralların tamamı için bkz. C# belirtimindeki Erişim Değiştiricileri ve Erişilebilirlik kısıtlamaları .
- Dönüş türünü işleç kadar erişilebilir bir türle değiştirin veya işlecin erişilebilirliğini dönüş türüyle (CS0056) eşleşecek şekilde azaltın.
publicişleci, dönüş değeri aracılığıyla daha az erişilebilir bir türü kullanıma sunamaz, çünkü derleme dışındaki çağıranlar sonucu kullanamaz. - Parametre türünü işleç kadar erişilebilir bir türle değiştirin veya işlecin erişilebilirliğini parametre türüyle (CS0057) eşleşecek şekilde azaltın. Bir
publicoperatör, parametre olarak daha az erişilebilir bir tür gerektiremez çünkü derleme dışındaki çağıranlar bağımsız değişkeni sağlayamaz.
Kullanıcı tanımlı dönüştürme kısıtlamaları
- CS0552: Kullanıcı tanımlı arabirime/arabirimden dönüştürme.
- CS0553: Temel sınıfa/sınıftan kullanıcı tanımlı dönüştürme.
- CS0554: Türetilmiş sınıfa/sınıftan kullanıcı tanımlı dönüştürme.
- CS0555: Kullanıcı tanımlı işleç, kapsayan türdeki bir nesneyi alamaz ve kapsayan türün bir nesnesine dönüştüremez.
- CS0556: Kullanıcı tanımlı dönüştürme, kapsayan türe veya kapsayan türden dönüştürmelidir.
- CS0557: Tür üzerinde yinelenen kullanıcı tanımlı dönüştürme.
C# dili, kullanıcı tanımlı dönüştürmelere hangi türlerin katılabileceğini kısıtlar. Kuralların tamamı için bkz. C# belirtimindeki Kullanıcı tanımlı dönüştürme işleçleri ve Dönüştürme işleçleri .
- Arayüz türüne (CS0552) dönüştüren dönüştürme operatörünü kaldırın. Arabirim türleriyle ilgili kullanıcı tanımlı dönüştürmeleri yasaklayan dil, arabirim dönüştürmelerini tür sisteminin başvuru dönüştürmeleri ve kutulama aracılığıyla işlediği için bu tür dönüştürmelere izin vermez. Bunun yerine açık arabirim uygulamaları veya yardımcı yöntemleri kullanın.
- Temel sınıfa veya temel sınıftan dönüşüm yapan işlecini (CS0553) kaldırın. Bir tür ile onun temel sınıfı arasındaki çevrimler, örtük başvuru çevrimleri (yukarı yayın) ve açık başvuru çevrimleri (aşağı yayın) aracılığıyla zaten mevcut olduğundan, kullanıcı tanımlı bir çevrim belirsizlik oluşturabilir.
- Türetilmiş bir sınıfa veya türetilmiş bir sınıftan dönüştürme işlemi yapan dönüştürme işlecini kaldırın. Temel sınıf dönüştürmeleri gibi, bir tür ile türetilmiş türleri arasındaki dönüştürmeler de devralma yoluyla dilde yerleşiktir ve kullanıcı tanımlı dönüştürmeler bunlarla çakışırdı.
- Kapsayan türü kendisine dönüştüren dönüştürme işlecini kaldırın (CS0555). Her türün kendisine zaten örtük bir kimlik dönüşümü vardır, bu nedenle, bir türden aynı türe kullanıcı tanımlı dönüştürme gereksizdir ve buna izin verilmez.
- Dönüştürme operatöründeki türlerden birini, kaynak veya hedef türü kapsayan tür olacak şekilde değiştirin (CS0556). Kullanıcı tanımlı dönüştürme, bunu bildiren türü içermelidir; üçüncü bir türdeki ilişkisiz iki dış tür arasında dönüştürme tanımlayamazsınız.
- Yinelenen dönüştürme işlecini kaldırın veya kaynak ve hedef türleri diğerinden farklı olacak şekilde yinelenen işleçlerden birini değiştirin (CS0557). Bir tür, belirli bir kaynak ve hedef türü çifti için yalnızca bir örtük ve bir açık dönüştürme bildirebilir.
Boole ve kısa devre işleçleri
- CS0215: true veya false işlecinin dönüş türü bool olmalıdır.
- CS0216: işlecinin de tanımlanması için eşleşen bir işleç gerekir.
- CS0217: Kısa devre işleci olarak uygulanabilmesi için, kullanıcı tanımlı bir mantıksal işlecin 2 parametresinin türüyle aynı dönüş türüne sahip olması gerekir.
- CS0218: Türde true ve false işleçlerinin bildirimleri bulunmalıdır.
C# dili Boole işleçleri ve kısa devre değerlendirmesi için belirli eşleştirmeler ve imzalar gerektirir. Kuralların tamamı için C# belirtiminde true ve false işleçleri, Boole mantıksal işleçleri ve Kullanıcı tanımlı koşullu mantıksal işleçler bölümüne bakın.
- ve
operator trueoperator falsedönüş türünübool(CS0215) olarak değiştirin. Bu işleçler bir değerin mantıksal olarak doğru mu yoksa yanlış mı olduğunu belirler, bu nedenle dilin döndürmesiniboolgerektirir. - Eşleşen eşleştirilmiş işleci (CS0216) tanımlayın. Dil, belirli işleçlerin çiftler halinde bildirilmesi gerektiğini belirtir:
operator ==ileoperator !=,operator <ileoperator >,operator <=ileoperator >=, veoperator trueileoperator false. - Kullanıcı tanımlı
&veya|işlecin dönüş türünü her iki parametre türüyle (CS0217) eşleşecek şekilde değiştirin. Kısa devre değerlendirmesi (&&ve||) için derleyici,&ile|işleçlerinin dönüş türünü, hem parametre türlerini hem de içerik türünün aynı tür olmasını gerektirir. - Türe hem
operator truehem deoperator falsebildirimlerini ekleyin (CS0218). Derleyici,&&ve||'ioperator trueveoperator false'ü, ayrıca karşılık gelen&veya|işlecini kullanarak yeniden yazar, bu yüzden kısa devre değerlendirmesinin çalışabilmesi için üçünün de mevcut olması gerekir.
Denetlenen işleçler
- CS9023: İşleç doğrulanamıyor
- CS9024: İşleç kontrolsüz yapılamaz
- CS9025: Denetlenmiş işleç, eşleşen denetlenmemiş bir sürümün de bildirilmesini gerektirir
- CS9027: Beklenmeyen 'kontrolsüz' anahtar sözcüğü
checked ve unchecked anahtar sözcükleri yalnızca belirli işleç bildirimlerine uygulanabilir. Kuralların tamamı için bkz. Aritmetik işleçler ve Kullanıcı tanımlı işaretli işleçler.
- Desteklenmeyen
checkedbir işleçten (unchecked, CS9024) veya anahtar sözcüğünü kaldırın. Yalnızca aritmetik işleçler+,-,*,/,++,--, ve açık dönüştürme işleçleri işaretli ve işaretsiz varyantları destekler. Karşılaştırma veya eşitlik operatörleri gibi diğer operatörler, belirli bir taşma davranışına sahip değildir ve kontrol edilen veya edilmeyen olarak belirlenemez. - İşlecin (CS9025) denetlenemeyen eşleşen bir sürümünü ekleyin. İşleç
checkedtaşma oluşturma davranışını sağlar, ancak derleyicinin bağlamlardauncheckedve bağlam belirtilmediğinde varsayılan olarak kullanmak için ilgili işaretsiz sürüme de ihtiyacı vardır. - Anahtar sözcüğü geçersiz
uncheckedkonumdan kaldırın (CS9027). biruncheckedişleç bildirimindeki anahtar sözcük yalnızca işleç söz diziminin bir parçası olarak geçerlidir (örneğin,public static explicit operator unchecked int(MyType t)). Bildirimde başka bir yere yerleştirmek söz dizimi hatasına neden olur.
Arabirim ve devralma gereksinimleri
- CS9311: Tür, arabirim üyesini uygulamaz. Tür, üyeyi birinin işleç olmaması nedeniyle uygulayamıyor
- CS9312: Tür devralınmış üyeyi aşamaz çünkü bunlardan biri operatör değil
- CS9313: Aşırı yüklenmiş bileşik atama işleci bir parametre alır
Derleyici, işleç bildirimleri ile arabirim üyeleri veya uyguladıkları veya geçersiz kıldıkları temel sınıf üyeleri arasında sıkı eşleştirme uygular. Kuralların tamamı için bkz İşleç aşırı yüklemesi ve Arabirimler.
- Uygulayan üyeyi arabirimin işleç üyesiyle eşleşen bir işleç bildirimiyle değiştirin veya uygulayan üye bir yöntem ise arabirim üyesini bir yöntemle değiştirin (CS9311). Bir işleç yalnızca aynı zamanda işleç olarak bildirilen bir arabirim üyesini uygulayabilir; normal bir metot ile bir işleç sözleşmesini karşılayamazsınız ve bunun tersi de geçerli değildir.
- Türetilmiş sınıf üyesi bir yöntem ise, geçersiz kılınan üyeyi temel sınıfın operatör üyesiyle eşleşen bir operatör bildirimiyle değiştirin veya temel sınıf üyesini bir yöntem bildirimiyle değiştirin (CS9312). Arabirim uygulaması gibi, bir geçersiz kılma, geçersiz kılınan üyenin türüyle eşleşmelidir—bir operatör, operatör olmayan bir üyeyi geçersiz klıyamaz.
- Bileşik atama işleci bildirimini tam olarak bir parametre (CS9313) kabul edecek şekilde değiştirin. Bileşik atama işleçleri, sol işlenenin örtük olarak
thisolduğu örnek üyeleridir, bu nedenle yalnızca sağ işlenen parametre olarak bildirilir.
Eşitlik Operatörleri
- CS0659: 'class' Object.Equals(object o) öğesini geçersiz kılar ancak Object.GetHashCode() öğesini geçersiz kılmaz
- CS0660: Tür == işlecini veya != işlecini tanımlar ancak Object.Equals(nesne o) öğesini geçersiz kılmaz
- CS0661: Tür == işlecini veya != işlecini tanımlar ancak Object.GetHashCode() öğesini geçersiz kılmaz
Derleyici, eşitlikle ilgili geçersiz kılmaların ve işleç tanımlarının uyumlu kalmasını talep eder. Object.Equals’i geçersiz kıldığınızda veya operator == / operator !=’yi tanımladığınızda, ilgili geçersiz kılmaları sağlamanız zorunludur. Kuralların tamamı için bkz. Tür için değer eşitliğini tanımlama ve Eşitlik işleçleri.
- Özelleştirdiğinizde Object.Equals üzerine bir Object.GetHashCode özelleştirmesi ekleyin (CS0659).
Dictionary<TKey,TValue> ve HashSet<T> gibi karma tabanlı koleksiyonlar, eşit olan iki nesnenin aynı karma kodunu döndürmesi gerektiği sözleşmesine dayanır. Eşleşen
GetHashCodegeçersiz kılma olmadan, eşit olarak karşılaştıran nesneler farklı demetlerle karma olabilir ve aramaların ve yinelenenleri kaldırmanın sessizce başarısız olmasına neden olabilir. -
operator ==veyaoperator !=öğesini tanımlarken Object.Equals için bir geçersiz kılma ekleyin (CS0660). Birçok çerçeve API'si, LINQ yöntemi ve koleksiyon işlemi dahil olmak üzere doğrudan çağıranEqualskod özel işlecinizi kullanmaz. Tutarlı birEqualsgeçersiz kılma olmadan, aynı iki nesne==tarafından eşit kabul edilebilir ancakEqualstarafından kabul edilmeyebilir ve bu da öngörülemeyen davranışlara yol açabilir. -
operator ==veyaoperator !=tanımladığınızda, üzerine Object.GetHashCode ekleyin (CS0661 geçersiz kılma). CS0659 gibi, eşitlik semantiğinizle tutarlı olmanız gerekirGetHashCode.operator ==İki nesnenin eşit olduğu düşünülse ancak farklı karma kodları döndürseler, karma tabanlı koleksiyonlar düzgün çalışmaz.
Taşma ve alt taşma hataları
- CS0031: Sabit değer 'value' bir 'türe' dönüştürülemez
- CS0220: İşlem, denetimli modda derleme zamanında taşma yapıyor
- CS0221: Sabit değer 'değer' 'tür'e dönüştürülemez (devre dışı bırakmak için 'unchecked' söz dizimini kullanın)
- CS0463: Ondalık sabit ifadesinin değerlendirmesi şu hatayla başarısız oldu: 'error'
- CS0543: 'numaralandırma' : numaralandırıcı değeri türüne sığamayacak kadar büyük
- CS0594: Kayan nokta sabiti 'tür' türü aralığının dışında bir değere sahip
- CS0652: İntegral sabiti karşılaştırması işe yaramaz; sabit 'tür' türü aralığının dışındadır
- CS1021: İntegral sabiti çok büyük
- CS8778: Sabit değer 'value' çalışma zamanında 'type' taşabilir (geçersiz kılmak için 'işaretsiz' söz dizimini kullanın)
- CS8973: İşlem çalışma zamanında taşabilir (geçersiz kılmak için 'unchecked' sözdizimini kullanın)
Derleyici, derleme zamanında sabit ifadeleri değerlendirir ve bir değer hedef türünün geçerli aralığını aştığında hataları veya uyarıları bildirir. Kuralların tamamı için bkz. işaretli ve işaretsiz deyimler ve Integral türleri.
- Sabit değeri hedef türün aralığına uyan bir değerle değiştirin veya hedefi daha büyük bir sayısal türle (CS0031) değiştirin. Derleyici, bir sabitin, sığmadığı bir durumda, onu örtük olarak daraltamaz; örneğin,
256öğesinibyteöğesine (0-255 aralığı) atamak bu hatayı üretir. Kesme kasıtlı ise, biruncheckedbağlamında açık bir dönüştürme kullanın. - Sabit ifadedeki aritmetiği düzelterek sonucun hedef türe uymasını sağlayın veya ifadeyi işaretsiz bir bağlamda kaydırarak sessiz taşmaya izin verin (CS0220). Derleyici, derleme zamanındaki sabit ifadenin tamamını varsayılan olarak denetlenen bir bağlamda değerlendirir, bu nedenle türün aralığını aşan ara veya son sonuçlar bu hataya neden olur.
- Sabit değeri veya hedef türünü, dönüştürmenin geçerli olması için değiştirin ya da kesilen sonucu bilerek istiyorsanız ifadeyi bir
uncheckedbağlamında sarın (CS0221). CS0220'nin aksine bu hata, kaynak değerin hedef türe uymadığı açık sabit dönüştürmeler için geçerlidir. - Sabit ifadeyi
decimalbasitleştirin veya ayırın; böylecedecimaltürünün aralığı ve hassasiyeti içinde kalır (CS0463). Türündecimalen yüksek değeri yaklaşık $7,9 \times 10^{28}$ ve 28-29 anlamlı basamaktır ve derleyici derleme zamanında tam ifadeyi değerlendirir. - Sabit listesi üye değerini, sabit listesi temel alınan türüne uyan bir değerle değiştirin veya temel türü daha büyük bir tamsayı türüyle (CS0543) değiştirin. Varsayılan olarak, sabit listeleri
inttemel tür olarak kullanır. Bir üyenin değeri temel alınan türün aralığını aşarsa, gibilongdaha büyük bir tür belirtin. - Kayan nokta sabitini hedef türün aralığındaki bir değerle değiştirin veya yerine
doublefloatdaha yüksek duyarlıklı bir tür kullanın (CS0594). Türüfloatyaklaşık $3,4 \times 10^{38}$ değerini destekler vedoubleyaklaşık $1,7 \times 10^{308}$ değerini destekler. - Sabitin değişkenin türü (CS0652) aralığında olması için karşılaştırmayı kaldırın veya düzeltin. Örneğin, bir
bytedeğişkeni ile300karşılaştırmak hiçbir zaman doğru olamaz, bu nedenle derleyici karşılaştırmanın işe yaramaz olduğu konusunda uyarır. Bu uyarı genellikle değişken türü ile istenen değer aralığı arasında bir mantık hatası veya uyuşmazlık olduğunu gösterir. - Daha büyük bir sayısal tür kullanın veya değeri birden çok işlem arasında bölün (CS1021). Bu hata, bir tamsayı değişmez değeri en büyük tamsayı türünün aralığını (
ulong, en fazla $1,8 \times 10^{19}$) aştığında oluşur. Bu aralığın dışındaki değerler için kullanmayı BigIntegergöz önünde bulundurun. - İfadeyi bir
uncheckedbağlamına sararak uyarıyı engelleyebilir veya değeri hedef türün aralığına (CS8778) sığacak şekilde değiştirebilirsiniz. Bu uyarı, çalışma zamanında veri kaybedebilecek sabit bir dönüştürme olduğunu gösterir; derleyici taşma işleminin kesinlikle gerçekleşeceğini kanıtlayamaz, ancak riski tanımlar. - Uyarıyı engellemek için ifadeyi bir
uncheckedbağlamda sar ya da olası taşmaları önlemek için aritmetiği yeniden yapılandır (CS8973). Bu uyarı CS8778'e benzer, ancak dönüştürmeler yerine aritmetik işlemler için geçerlidir; derleyici, işlemin çalışma zamanında taşabileceğini algılar.