Çözüldü C# Programlama dilinde "?" ve "??" işareti ne işe yarar?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Çözüm
Tek soru işaretinin bildiğim iki farklı kullanımı var. Bir tanesi if-else gibi koşullu yönlendirme için, diğeri ise null kontrolü için.

if-else;
[CODE lang="csharp" highlight="1-5,7"]
c = 0;
if(a == b){
c = 1;
}else{
c = 2;
}

c = a == b ? 1 : 2;[/CODE]

null kontrolü;

C#:
Console.WriteLine(Kullanici?.Adi);

Yukarıda soru işaretinin amacı eğer Kullanici nesnesi null değilse Adi'ni yazdır gibi.


Çift soru işareti ise;

C#:
a = b ?? c;

Eğer b null ise c'yi a'ya atıyorsun.
Değişken tanımlamada null olabilir demektir.
Programlama esnasında ise if else koşulunun kısaltılmış halidir.

a ??= 0

eğer a null ise 0 yap demektir.

string name = kullanici_isim_degiskeni ?? "Noname"

kullanici_isim_degiskeni eğer null ise "Noname" ataması yapılacak.

Googlede araştırarak daha iyi cevaplar bulabilirsin.

C# Null-coalescing
 
İnternetten kolaylıkla öğrenebilirsiniz. İngilizce video izleyebiliyorsanız İngilizce araştırabilirsiniz de.
Google galiba noktalama işaretlerini saymadığı için direkt ?? şeklinde arayamadım. Ama buraya ulaştım. Orada da dokümantasyon linki paylaşılmış, oradan okudum.

FormsAuth = formsAuth ?? new FormsAuthenticationWrapper(); örneğini vermiş. ?? operatörünün solu ve sağı var. Eşittirin solundaki şeyi eşittirin sağındaki, yani ?? işaretinin solundakine atıyor. Ama null değilse. Null ise ?? işaretinin sağındakini çağırıyor, o ne döndürürse.
??= ise işaretin solundaki null ise sağındakini çağırıyor.
 
Tek soru işaretinin bildiğim iki farklı kullanımı var. Bir tanesi if-else gibi koşullu yönlendirme için, diğeri ise null kontrolü için.

if-else;
[CODE lang="csharp" highlight="1-5,7"]
c = 0;
if(a == b){
c = 1;
}else{
c = 2;
}

c = a == b ? 1 : 2;[/CODE]

null kontrolü;

C#:
Console.WriteLine(Kullanici?.Adi);

Yukarıda soru işaretinin amacı eğer Kullanici nesnesi null değilse Adi'ni yazdır gibi.


Çift soru işareti ise;

C#:
a = b ?? c;

Eğer b null ise c'yi a'ya atıyorsun.
 
Çözüm

Geri
Yukarı