SORU
10 ŞUBAT 2011, PERŞEMBE


Boş ve Sistem arasındaki fark nedir.DBNull.Değer mi?

Boş ve Sistem arasında herhangi bir fark yoktur.DBNull.Değer mi? Evet ise, ne oldu?

Bu davranış, şimdi fark ettim

while (rdr.Read())
{
    if (rdr["Id"] != null) //if (rdr["Id"] != System.DBNull.Value)  
    {
        int x = Convert.ToInt32(rdr["Id"]);
    }
}

Veritabanı sql bir veri okuyucu kullanarak veri almak iken, bu değer döndürülür yok ama if(rdr["Id"] != null) true iade ve sonunda tam sayı olarak boş bir döküm için bir istisna attı.

Ama, bu ise if (rdr["Id"] != System.DBNull.Value) döner false kullanırsam.

Boş ve Sistem arasında ne fark var.DBNull.Değer mi?

CEVAP
10 ŞUBAT 2011, PERŞEMBE


İyi, null herhangi bir tür örneği değildir. Bunun yerine, geçersiz bir referanstır.

Ancak, System.DbNull.Value, geçerli bir referans örneği System.DbNull (System.DbNull singleton System.DbNull.Value size bir başvuru için tek örnek bu sınıfı) temsil varolmayan*veritabanındaki değerleri.

*Normalde null ama sorun allak bullak etmek istemiyorum.

Yani, ikisi arasında büyük bir kavramsal fark vardır. Anahtar null geçersiz bir başvuru temsil eder. Sınıfı System.DbNull veritabanı alanında varolmayan bir değeri temsil eder. Genel olarak, biz-meli denemek kullanmaktan kaçının aynı şeyi (bu durumda null) temsil eden iki çok farklı kavram (bu durumda geçersiz bir başvuru karşısında değer varolmayan bir veritabanı alanı).

Unutmayın, bu bir sürü insan tam olarak System.DbNull bir örnek olduğu gibi, genel olarak, null object pattern kullanmanızı öneririz nedeni budur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007
  • ethr95awd

    ethr95awd

    8 Kasım 2006
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011