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

  • BroadCity

    BroadCity

    10 ŞUBAT 2010
  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • DorkmanScott

    DorkmanScott

    14 NİSAN 2006