C#’ta İşi Kolaylaştıran Operatörler (?? ve ?:)


C#’ın tüm operatörlerinin olduğu MSDN sayfasına aşağıdaki bağlantıdan gidebilirsiniz:

http://msdn.microsoft.com/en-us/library/6a71f45d.aspx

Benim özellikle değinmek istediğim operatörler ? ve ?: operatörleri.

Örneğin bir if sorgusuyla girilen bir sayının ikinin katı olup olmadığına bakalım:

if (Convert.ToInt32(txtGirilenSayi.Text) % 2 == 0) MessageBox.Show(“girdiğiniz sayı ikinin katı”);
else MessageBox.Show(“girdiğiniz sayı ikinin katı değil”);

Burada eğer girilen sayının ikiye bölümünden kalan sıfırsa, yani ikiye tam bölünüyorsa ikinin katı olduğunu, değilse ikinin katı olmadığını ekrana yazdırdık. Peki bunu söz konusu operatörlerle nasıl yaparız? Şöyle:

int girilensayi = Convert.ToInt32(txtGirilenSayi.Text);
string sonuc = (girilensayi % 2 == 0) ? “ikinin katı” : “ikinin katı değil”;
MessageBox.Show(sonuc);

Parantezin içindeki değerin sonucu değer true ise, soru işaretindne sonraki ilk bölüm, false ise ikinci bölüm çalışacaktır. Bu operatörümüz ?: operatörü olarak bilinir.

Gelelim  ??  operatörüne:

int? personelMaasi = null;
int girilensayi = Convert.ToInt32(txtGirilenSayi.Text);
if (girilensayi > 5) personelMaasi = 1000;
int personelHakEdisi = personelMaasi ?? 0;
MessageBox.Show(“Hak ettiğiniz maaş: ” + personelHakEdisi.ToString() + ” Lira”);

Burada dikkat edilmesi gereken yer int? ile tanımlama yapılması. Eğer bu tanımlamayı yapmazsanız operatörün mantıksal karşılaştırma yapması mümkün olmaz. Yani kısaca kullanamaz; hata alırız. Asıl amacımız kod içinde tanımlaması yapılan ama değer girilmemiş olma olasılığı bulunan bir değişkeni kullanmaya kalktığımızda hata çıkmasını engellemek. Eğer personelMaasi değişkeni girilenSayi 5ten büyük olmasaydı 0 değerini alacaktı. Çünkü int personelHakEdisi = personelMaasi ?? 0;  satırındaki ??, personelMaasi null’sa 0 değerini personelHakEdisi’ne yazıyor. Şimdi “o zaman null vermeyiz, 1 verirz geçeriz” diyebilirsiniz. =] Elbette burada null senaryo gereği yazıldı. İsterseniz personelMaasi’nın değerini 250 yapıp işlem satırına geldiğinizde halen 250 ise 0 olsun şeklinde de kullanabilirsiniz.

Haydi kolay gelsin.

Hakkında Mehmet KAPLAN
mehmet.kaplan@hotmail.com.tr https://mehmetkaplan.wordpress.com/mehmetkaplan/

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: