Tarayıcınız JavaScript! desteklememektedir.

C# GetValueOrDefault Kullanimi -- null Kontrolü

GetValueOrDefault Kullanimi

Merhaba Arkadaslar,

Uygulama gelistirirken, bazi durumlarda nesnenin null olup olmadigini kontrol eder, buna göre islem yapmasini isteriz. Hemen örnek bir senaryo yapalim:

Bir e-ticaret sitemiz olsun, bu sitede siparisleri sakladigimiz bir tablo olsun. Bu tabloda, siparis durumu diye bool türde nullable bir alanimiz olsun. Bu alan eger false ise yeni siparis, null ise islem yapiliyor, true ise teslim edildi olarak kabul edilsin. (Tabii ki bu örnek bir senaryo, gerçek hayatta kullanimi böyle olmayacaktir.)

Kod kisminda islem yaparken gelen verinin null olup olmadigini kontrol etmeden islem yaparsak sorun yasayabiliriz. Söyle ki;

//…. Verileri getirelim (EF ile çalistigimizi var sayiyorum.)

var siparis = ctx.Siparisler.FirstOrDefault(s=>s.ID.Equals(2));//sembolik olarak ID’si 2 olan siparisi getirdim.

Gelen siparis nesnesindeki SiparisDurumu isimli alani baska bir degiskene atayacagim.

bool durum = siparis.SiparisDurumu; //Hata verdi. Çünkü SiparisDurumu Nullable, durum ise NonNullable. Bu atamayi yaptik ama cast etmemiz gerekiyor. Peki bu durumda SiparisDurumu null ise ne olacak?

bool durum = siparis.SiparisDurumu.Value;// su an SiparisDurumunun null olmadigina eminiz ve durum isimli degiskene atadik. Eger null gelirse, program hata verecektir.

Peki ne yapmali? Ne yaparsak veri null olsun olmasin bir degiskene atayabilir, kontrol edebiliriz? Çünkü en önemli konu bunu sistematik bir sekilde yapmak.(Gelen her verinin null olacagini ya da olmayacagini bilemeyiz çünkü.)

Makalemizin esas konusu olan GetValueOrDefault fonksiyonunu kullanarak bu durumu kolayca kontrol altina alabiliriz.

//bool durum = siparis.SiparisDurumu.GetValueOrDefault();// eger gelen veri null ise boolean’in varsayilan degeri olarak “false” deger alacaktir.

Diger alternatif ise, if ile kontrol etmek. Tabii bu yöntem çok kullanisli mi degil orasi tartisilir.

if(ctx.SiparisDurumu==null)//null oldugu durum
{

}
else(null olmadigi durum)
{
if(ctx.SiparisDurumu.Value==true)//gelen verinin true oldugu durum
{

}
else//gelen verinin false oldugu durum
{

}
}

Her iki yöntem ile null kontrolünü saglayabilirsiniz. Nullable verilerde standart olarak gelen Value fonksiyonu belirleyici özellik olacaktir. Isterseniz GetValueOrDefault fonksiyonu ile, dilerseniz Value fonksiyonu ile kontrol edebilirsiniz.

Çalismalarinizda kolayliklar dilerim