SORU
29 Aralık 2009, Salı


C# null değer türleri ile karşılaştırılması Tamam

Bu bugün karşılaştım ve hiç bir fikrim yok neden C# derleyici bir hata atmak değil.

Int32 x = 1;
if (x == null)
{
    Console.WriteLine("What the?");
}

X hiç muhtemelen boş nasıl olabilir anlamış değilim. Özellikle bu atama bu yana kesinlikle bir derleyici hatası atar:

Int32 x = null;

X boş olma ihtimali, Microsoft sadece derleyici bu kontrol koymak için karar verdiniz mi, ya da tamamen Gözden kaçmıştır.

Güncelleme: yazmayı kodu ile karıştırdıktan Sonra bu madde, birden derleyici bu ifadeyi hiç doğru bir uyarı geldi. Şimdi gerçekten kayboldum. Bir sınıf nesnesi koydum ve uyarı gitti ama soru ile, bir değer türü null olarak sona erebilir kaldı.

public class Test
{
    public DateTime ADate = DateTime.Now;

    public Test ()
    {
        Test test = new Test();
        if (test.ADate == null)
        {
            Console.WriteLine("What the?");
        }
    }
}

CEVAP
29 Aralık 2009, Salı


Bu operatör aşırı yükleme çözünürlüğü seçmek için benzersiz iyi bir operatör olduğundan yasaldır. == Operatörü iki NULL değer vermez alır. İnt yerel null bir int için dönüştürülebilir. Null null edebi bir int için dönüştürülebilir. Bu nedenle bu == operatörü, yasal bir kullanım ve her zaman yanlış neden olur.

Benzer şekilde, biz de sana söylememe izin verin "if (x == 12.6) de her zaman yanlış olacak.", İnt yerel bir çift Cabrio, edebi bir çift Cabrio, belli ki hiç eşit olurlar.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • VitalyzdTv

    VitalyzdTv

    7 AĞUSTOS 2011
  • WhtButterflyLiz

    WhtButterfly

    14 NİSAN 2008
  • WOSU Public Media

    WOSU Public

    23 AĞUSTOS 2007