C# Nullable Types

Iyi geceler arkadaslar yeni gelen projenin Css’ ini yaziyordum vakit hayli geç oldugu için yatmaya
karar verdim tam bu esnada kafama dank diye uzun zamandir makale yazmadigim aklima geldi tabi buna
makale denilirse 🙂 neyse bir c# 2.0 yeniligi olan nullable typeslardan bahsetmek istiyorum..
Veritabani islemlerinde çogu zaman sikinti yaratan, deger tipleri (int, bool, ..) için "null" deger gönderememe hikayesini çözen bir yenilik. artik bir deger tipi (value type), hiç bir deger atanmamis (undefined) bir durumda kalabiliyor. eskiden bir ilkel tipimizin illa bir degeri olmasi gerekiyordu. vermeseniz de ön tanimli degerini aliyordu.
.
nullable : varsayilan olarak value type degiskenleri null gecemezsiniz. aldiginiz hatada bu acikca belirtilir.
ancak yapilan bazi islemlerde deger yakalama sirasinda gelen deger eger null ise projelerimiz patlayabilir. bunu engellemek null gelen deger varsa yerine varsayilan bir degisken atayabilmek için bu tip kullanilir..

"nullable" bir tipi söyle tanimliyoruz:


string kelime = null;
int sayim = null;
int? sayim = null;


Bir nullable type degiskeninin deger içerip içermedigini söyle anlayabiliriz:
if (x.hasvalue)" veya "if (x!=null)" denilerek deger içerip içermedigi denetlenebilir.

Dipnot taklitlerden sakininiz:

int? a = null;
object b = a;
return b==null;

satirlarindan true degerini dondurecek reference type taklidi yapabilen strong valued tiptir.

Söyle bir kullanimda var..

int? a = null;
int defaultval = 10;
console.writeline("anin degeri: " + (a ?? defaultval));
diyelimki "a" degiskenine veritabanindan deger gelmedi.. "a" haliyle null kaldi
bunun yerine a ?? yani harbiden null ise defautval degiskeninin degerini göster demek oluyor..
bir nevi bir patlama gerçeklesmemesi için kod sigortasi..

tabi bunu söylede yapabilirdik..
.
getvalueordefault() methodu degiskenin uzerinde deger varsa onu al yoksa varsayilan atamam yap..
int ugurlusayi = gelenID.GetValueOrDefault(5);

Buda generic hali:
Nullable<int> gelenID = new Nullable<int>();

Ayrica DBNull.Value diye birsey vardirki bu parametre ile db den gelen nesnenin null olup olmadigini
kontrol etme amaci ile kullanilir.
if(DBNull.Value!= datarow["alanadi"])
gibisinden..

Bu saatte benden bu kadar iyi geceler tekrardan..

Hakki ESER

2 thoughts on “C# Nullable Types

  1. Eger bir yerden almis olsaydim altinti olarak yazardim. Ayrica arkadasin degilim, üslubunuza dikkat ediniz.

     

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir