"?" ve ":" kullanılarak if then else kalıbının nasıl kullanıldığını görmek için, basit bir fonksiyon yazalım. Şu anki tarihi [gg.aa] (sadece gün ve ay) formatında yazdıran bir olsun.
Fonksiyonun özellikle, gün ve ay'ı iki haneli olarak yazması gereksin.
Bu durumda, tarihYaz fonksiyonumuz şu şekilde olacaktır:
public string tarihYaz()
{
int gun = DateTime.Now.Day;
int ay = DateTime.Now.Month;
string strGun, strAy;
if (gun < 10)
strGun = "0" +gun.ToString();
else
strGun = gun.ToString();
if (ay < 10)
strAy = "0" +ay.ToString();
else
strAy = ay.ToString();
return strGun + "."+ strAy + ".";
}
Aynı fonksiyonu şu şekilde de yazabiliriz. Bu şekilde daha okunaklı bir kod blogumuz olur:
public string tarihYaz()
{
int gun = DateTime.Now.Day;
int ay = DateTime.Now.Month;
strGun = gun < 10 ? "0" + gun.ToString() : gun.ToString();
strAy = ay < 10 ? "0" +ay.ToString() : ay.ToString();
return strGun + "."+ strAy + ".";
}
Burada önemli olan, "?" ve ":" kullanarak yazılmış olan fonksiyonu nasıl okuyacağımız. Dolayısıyla da, nasıl yazılacağıdır.
strGun= :trGun değeri öyle bir stringe eşittir ki,
gun<10? :eğer gun 10'dan küçükse
"0"+gun.ToString() :başına 0(sıfır) ekle
: :değilse
gun.ToString() :gun sayısını strGun olarak set et.
Yukarıdaki açıklamadan da anlaşılacağı gibi, böyle bir yazımda, "if" kelimesi iptal ediliyor(kullanılmıyor), then(C Sharp ta zaten yok aslında) yerine "?" kullanılıyor else yerine ise ":" kullanılıyor.
Yani:
if (gun<10) ... else ... = gun<10? ... : ...
Daha okunabilir kodlar dileğimle,
Kolay gelsin...