Bir obje üzerinde işlem yapmadan önce objenin null olabileceğini kontrol etmek gerekmektedir. Eğer bu kontrolleri yapmazsak "NullReferenceException" hatası ile karşılaşırız. Bir örnek üzerinde açıklayalım.
private bool Kontrol(string isim) { if(isim == null) { return false; } return isim.ToLower() == "hikmet"; }
Şimdi bu işlemi "Null Conditional Operator" ile yapalım.
private bool Kontrol(string isim) { return isim?.ToLower() == "hikmet"; }
"isim" objesinden sonra kullanılan soru işareti (?) kendisinden önce gelen objenin null olup olmadığını kontrol eder. Eğer null ise geriye objenin varsayılan değerini döndürür, değilse bir sonraki işleme geçer. Başka bir örnek üzerinde inceleyelim. Önce if kontrolü ile yapalım.
Personel personel = null; if(personel != null) { return personel.Ad; }
Ya da
Personel personel = null; return personel != null ? personel.Ad : "";
Şimdi "Null Conditional Operator" ile yapalım.
Personel personel = null; return personel?.Ad;
Aynı örneği araya bir obje daha dahil ederek yapalım.
Personel personel = null; if(personel != null && personel.Departman != null) { return personel.Departman.Ad; }
Personel personel = null; return personel != null ? (personel.Departman != null ? personel.Departman.Ad : "") : "";
Personel personel = null; return personel?.Departman?.Ad;
Yukarıda ki 3 yöntemi incelediğimizde "Null Conditional Operator" kullanımı bize daha kısa ve okunaklı kodlar yazmamızı sağlamaktadır.
Başarılar dilerim.