HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. 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);
Kod:
int day = 1;
string dayName = day switch
{
1 => "Pazartesi",
2 => "Sali",
3 => "Carsamba",
4 => "Persembe",
5 => "Cuma",
6 => "Cumartesi",
7 => "Pazar",
_ => "Hatali Gun!"
};
Console.WriteLine(dayName);
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.
Kod:
var juniorDeveloper = new Employee()
{
TitleId = 1,
FullName = "Ahmet Birinci"
};
string titleName = juniorDeveloper.TitleId switch
{
1 => "Stajyer",
2 => "Junior Developer",
3 => "Mid Developer",
4 => "Senior Developer",
5 => "Team Lead",
_ => "Hatalı Id"
};
Console.WriteLine(titleName);
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.
Kod:
string titleName = juniorDeveloper switch
{
{ TitleId: 1 } => "Stajyer",
{ TitleId: 2 } => "Junior Developer",
{ TitleId: 3 } => "Mid Developer",
{ TitleId: 4 } => "Senior Developer",
{ TitleId: 5 } => "Team Lead",
_ => "Hatalı Id"
};
Console.WriteLine(titleName);
Koşullu Switch İfadeleri
Switch içerisine gönderdiğimiz object'e ait koşulları da yazabiliriz. Buna bir örnek vermek gerekirse;
Kod:
var employee = new Employee()
{
TitleId = 1,
FullName = "Ayşe İkinci",
Department = "Sales"
};
string titleName = employee switch
{
{Department: "IT", TitleId: 1 } => "Stajyer IT",
{Department: "Sales", TitleId: 1 } => "Stajyer Pazarlamacı",
_ => "Hatalı Id"
};
Console.WriteLine(titleName);
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
{
}
Kod:
string titleName = employee switch
{
Employee { Department: "IT", TitleId: 1 } => "Stajyer IT",
Employee { Department: "IT", TitleId: 2 } => "Junior Developer",
Employee { Department: "IT", TitleId: 3 } => "Mid Developer",
Director { Department: "IT" } => "CTO",
_ => "Hatalı Id"
};
Kaynak;
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Kilitli
- Cevaplar
- 7
- Görüntüleme
- 2K
- Kilitli
- Cevaplar
- 1
- Görüntüleme
- 393
