İkinci bir kullanımı ise null değeri alamayan değer tipleri (int gibi) için null değeri alabilmesini sağlıyor:
Koşullu null operatörü C# 6.0'da kullanılmaya başlandı. Eğer daha önceki bir sürümü kullanıyorsanız çalışmayacaktır. Denemedim ama Visual Studio 2015'de çalışması lazım.
Birinci kullanım şekli (OrnekAdi?.Ozellik)
Bir örneğin özelliğine erişmeden önce örneği temsil eden değişkenin null olup olmadığı test ediyor. if ile beraber kullandığında örneğin / değişkenin değeri null ise if çalıştırılmıyor (false kabul ediliyor). Atamalarda ise örneğin değeri null değilse özelliğinin değerini, null ise null atıyor.
Örneğin:
if (adi?.IndexOf("A") > -1)
Console.WriteLine("Adında A harfi var.");
Örnek alttakiyle aynı işi görüyor:
if (adi != null && adi.IndexOf("A") > -1)
Console.WriteLine("Adında A harfi var.")
Bunu aşağıdaki gibi de kullanabiliriz:
if (musteri?.Adres?.Mahalle)
Console.WriteLine(musteri.Adres.Mahalle);
Yani musteri null değilse ve adresi de null değilse mahallesini ver.
İkinci kullanım şekli (TipAdi?)
İkinci kullanımda değişken tipinin yanında soru işareti yazılırsa, Nullable (null değeri alabilir) olmayan bir tipe (int gibi bir değer tipi) null ataması yapılabiliyor.
Örnek:
int? karakterSayisi = Adi?.Length;
Bu örnekte her iki kullanım birden var. Adi değişkeninin değeri null ise
Adi?.Length null döndüreceğinden
karakterSayisi isimli değişkene Nullable özelliği verilip null değeri atanmış oluyor.