Çö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.

Can_Coşkun01

Hectopat
Katılım
14 Temmuz 2021
Mesajlar
45
Unity ile bir oyun yaparken parallax konusunda Bu videodan yardım aldım. Videoda soru işareti kullanılmış ve başka yazılarda "?" kullanımını da duydum. Bu özellik ne işe yarar?
 
Çö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
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…