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

  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013
  • TotalxLuna

    TotalxLuna

    27 Kasım 2011
  • TWiT Netcast Network

    TWiT Netcast

    27 EKİM 2005