Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.
0

C#'da değişken adının yanında kullanılan tek soru işareti

Bazı kodlarda gördüm. Değişken adının yanında tek bir soru işareti kullanılıyor.

Kullanım amacı nedir?

Soran:12.04.16 22:41
misafir  

1 Cevap

0
Buna null conditional (koşullu null) operatörü diyorlar. Bir değerin null olup olmadığını kontrol içi bize kısa bir yol sunuyor.

İ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.

Örnek aşağıdakinin kısa yoldan yapılmışı:
Nullable<int> karakterSayisi = Adi?.Length;


Cevaplayan: 12.04.16 20:47
cevapsitesi
102,034p 15ü
Cevabı seçen: 08.06.16 00:03
canora
101,387p 4ü