Ana Sayfa Hakkımda Dersler Blog Mikrofonda İletişim Projeler
Dersler TEMEL · C#

C# Temelleri — Nullable & Null Safety

8 dk okuma · Emre Ulutabak
1
Null nedir?

Boş bir cüzdan düşün. İçinde para yok — ama cüzdan var. Şimdi bir de cüzdanın hiç olmadığı durumu düşün. İşte null tam olarak budur: nesnenin kendisinin yokluğu.

Yazılımda bir değişken henüz hiçbir nesneye işaret etmiyorsa değeri null'dır.

2
Null neden patlama yapar?

Olmayan bir nesnenin metodunu çağırmaya çalışırsan program NullReferenceException fırlatır ve çöker. Bu yazılımda en sık karşılaşılan hatalardan biridir.

csharp
string isim = null;

Console.WriteLine(isim.Length); // PATLAMA: NullReferenceException
// isim null olduğu için .Length çağrılamaz
3
Nullable tipler

Değer tipleri (int, bool, DateTime) normalde null olamaz. Ama bazen bir sayının "henüz girilmemiş" olduğunu ifade etmek istersin. Bunun için ? kullanılır.

csharp
int sayi = null;       // HATA — int null olamaz
int? sayi = null;      // DOĞRU — nullable int

string? isim = null;   // C# 8+ ile string de nullable olabilir

if (sayi.HasValue)
    Console.WriteLine(sayi.Value);
else
    Console.WriteLine("Değer girilmemiş.");
4
?. ve ?? operatörleri

?. (null-conditional) operatörü: nesne null ise patlamak yerine null döndürür.
?? (null-coalescing) operatörü: sol taraf null ise sağ taraftaki varsayılan değeri kullanır.

csharp
string? isim = null;

// ?. operatörü — null ise patlamaz, null döner
int? uzunluk = isim?.Length;  // null

// ?? operatörü — null ise varsayılanı kullan
string gosterim = isim ?? "Misafir";
Console.WriteLine(gosterim); // "Misafir"

// İkisini birlikte kullanmak
string sonuc = isim?.ToUpper() ?? "BİLİNMİYOR";
Console.WriteLine(sonuc); // "BİLİNMİYOR"
💡
?. ve ?? operatörlerini birlikte kullanmak null kontrolünü tek satıra indirir.
5
Altın kurallar
💡
Null kontrolünü atlamak en sık patlama sebebidir. Her zaman null olabilir mi diye sor.
💡
?. operatörü güvenli erişim sağlar — null ise patlamak yerine null döner.
💡
?? operatörü varsayılan değer vermek için kullanılır. Null yerine anlamlı bir şey göster.
MİNİ QUIZ
Null ile ilgili hangisi doğrudur?
int tipi varsayılan olarak null olabilir
?? operatörü sol taraf null ise sağ taraftaki değeri kullanır
?. operatörü null olan nesneye erişince patlama yapar
Null kontrolü yapmak gereksizdir