ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Switch ifadeleri C# programlama dilinde kullandığımız temel ifadelerden biridir.
İlk olarak klasik bir switch ifadesi örneği yazalım. Sade bir şekilde, verilen gün indeksine ait günün ismini dönen bir kod bloğu olsun.
Kod:
int day = 1;
string dayName;
switch (day)
{
case 1 : dayName = "Pazartesi";
break;
case 2 : dayName = "Sali";
break;
case 3 : dayName = "Carsamba";
break;
case 4 : dayName = "Persembe";
break;
case 5 : dayName = "Cuma";
break;
case 6 : dayName = "Cumartesi";
break;
case 7 : dayName = "Pazar";
break;
default: dayName = "Hatali Gun!";
break;
}
Console.WriteLine(dayName);
Yukarıdaki kod bloğunda da aslında büyük bir sorun diyebileceğimiz bir şey yoktur fakat, case sayısı arttıkça, bu blok uzayacak ve aslında kodda kalabalık yapacak "case", ":", "break" keywordleri eklememiz gerekecek. Bu tarz sadece string atama yaptığımız bir switch bloğunu aşağıdaki gibi daha sade bir şekilde ve daha kolay genişletebilir hale getirebiliriz.
Bu şekilde de string atama kontrolümüzü daha okunur bir şekilde yapabilirsiniz.
Farkedeceğiniz üzere son kısımda yer alan "_" kısmı, klasik switch ifadesindeki "default" bloğuna denk gelmektedir.
Şimdi diyeceksiniz ki, "sadece kod biraz daha kısa gözüksün diye bu kullanımı mı çıkartmış Microsoft?". Tabi ki de bu kadar değil bu kullanımın getirdiği kolaylıklar. Şimdi diğer kolaylıklarına değinelim. Bunun için öncellikle bir tane Employee sınıfı oluşturuyorum.
Kod:
class Employee
{
public int TitleId { get; set; }
public string FullName { get; set; }
public string Department { get; set; }
}
Null Object Kontrolü
Program akışında null object'ler ile sık sık karşılaşıyoruz. Program logic'indeki bir hatadan, db'deki hatalı bir kayıttan vs. null object'ler ile başa çıkmamız gerekebiliyor. Bunun için yazdığımız class üzerinden yeni bir switch bloğu oluşturalım.
Kodu çalıştırdığımızda "Stajyer" Çıktısını verecektir.
Ama burada bize null bir object gelmiş olsaydı, aşağıdaki gibi null object hatasıyla karşılacaktık.
Bu tarz null checkleri yapabilmek, object'e ait koşullar oluşturabilmek için, "Property Pattern" diye adlandırılan farklı bir özelliğe değineceğim. Bunun için yukarıda yeni yazdığımız switch bloğunu aşağıdaki gibi güncelleyelim.
Şirkette stajyer genel bir ünvandır ve farklı departmanda stajyer'ler olabilir. Bunun için sadece TitleId değerine bakmak yerine Department değerine de bakmak gerekebilir. Bunun için iki property'yi de switch içerisinde yukarıdaki gibi kontrol edebiliriz.
Class type Kontrolü
Bu yapı içerisinde objeclerimizin class tiplerine göre de filtrelemelerimizi yapabiliriz. Bunun için öncellikle daha önce eklediğimiz Employee sınıfından kalıtım alan yeni "Director" class'ı oluşturalım.
Kod:
class Director : Employee
{
}
Yazdığımız switch ifadesini de aşağıdaki gibi güncelleyebiliriz.