Programlama işine bir miktar aşina iseniz ya da etrafınızda deneyimli programcılar var ise değer tipleri (value types), referans tipleri (reference types) laflarını duymuş olmanız muhtemeldir. Kısaca hatırlayacak olursak bir değer tipi doğrudan değerin kendisini saklarken, referans tipi değerin saklandığı hafıza bölgesinin adresini saklıyorlardı.
Gel gelelim oyle durumlar oldu ki degiskenin degersiz olmasi gerekiyordu. Mesela bir kullanici sundugunuz seceneklerden herhangi birini secmeyebilir. Bu durumda eskiden gider ilgili secime karsilik gelen degiskene 0 ya da -1 atardik. Bu da secilmedigi anlamina gelirdi.
Ama .NET Nullable Types artik herhangi bir deger tipimiz de null degerini tasiyabilir. (Tabi aslinda bu tipler referans tipi ama unboxing yapmadan deger tipine atanabilirler)
Ornegin null alabilen integer tipine ornek vermemiz gerekirse kullanimi soyle ozetlenebilir:
class Program
{
static void Main(string[] args)
{
int? a = null;
int id = -1;
//1nci yontem
if (a.HasValue)
{
id = a.Value;
}
else
{
id = -10;
}
//2nci yontem
id = a.GetValueOrDefault(-10);
//3nci
id = a.HasValue ? a.Value : (int)-10;
}
}
Not: ? isareti null deger alabilen tiplerin kisa gosterimidir. Eger bir yerde System.Nullable gorursenin bu int? ile ayni seydir.