Kontrol yapıları, programın belirli koşullara göre farklı kod bloklarını çalıştırmasını sağlar. C#’ta en yaygın kullanılan kontrol yapıları if-else ve switch-case ifadeleridir.
1. If-Else Yapısı
1.1. If Kullanımı
if-else yapısı, belirli bir koşul doğru (true) olduğunda bir kod bloğunu çalıştırır, aksi takdirde başka bir kod bloğunu çalıştırır.
if (koşul)
{
// Koşul doğruysa çalışacak kod
}If Kullanımıint yas = 20;
if (yas >= 18)
{
Console.WriteLine("Ehliyet alabilirsiniz.");
}C#Not: Eğer {} süslü parantez kullanılmazsa, if bloğunda yalnızca bir satır kod çalışır.
1.2. If-Else Kullanımı
else bloğu, if koşulu yanlış (false) olduğunda çalışır.
int yas = 16;
if (yas >= 18)
{
Console.WriteLine("Ehliyet alabilirsiniz.");
}
else
{
Console.WriteLine("Ehliyet almak için yaşınız yetersiz.");
}C#Çıktı:
Ehliyet almak için yaşınız yetersiz.C#1.3. If-Else If-Else Kullanımı
Birden fazla koşul kontrol edilmek istenirse else if blokları kullanılabilir.
int not = 85;
if (not >= 90)
{
Console.WriteLine("Pekiyi");
}
else if (not >= 70)
{
Console.WriteLine("İyi");
}
else if (not >= 50)
{
Console.WriteLine("Orta");
}
else
{
Console.WriteLine("Kaldınız");
}C#1.4. İç İçe If Kullanımı (Nested If)
İç içe if yapıları kullanılarak daha karmaşık koşullar kontrol edilebilir.
bool girisYapildi = true;
bool adminMi = true;
if (girisYapildi)
{
Console.WriteLine("Giriş yapıldı.");
if (adminMi)
{
Console.WriteLine("Admin paneline hoş geldiniz.");
}
else
{
Console.WriteLine("Kullanıcı paneline yönlendiriliyorsunuz.");
}
}
else
{
Console.WriteLine("Önce giriş yapmalısınız.");
}C#2. Switch-Case Yapısı
switch yapısı, çok sayıda if-else bloğunun yerini alarak kodun daha okunaklı olmasını sağlar. Bir değişkenin farklı durumlarına (case) göre çalışır.
2.1. Switch Kullanımı
switch (değişken)
{
case değer1:
// Çalıştırılacak kod
break;
case değer2:
// Çalıştırılacak kod
break;
default:
// Hiçbiri uymuyorsa çalışacak kod
break;
}C#2.2. Temel Switch Örneği
int gun = 3;
switch (gun)
{
case 1:
Console.WriteLine("Pazartesi");
break;
case 2:
Console.WriteLine("Salı");
break;
case 3:
Console.WriteLine("Çarşamba");
break;
case 4:
Console.WriteLine("Perşembe");
break;
case 5:
Console.WriteLine("Cuma");
break;
case 6:
Console.WriteLine("Cumartesi");
break;
case 7:
Console.WriteLine("Pazar");
break;
default:
Console.WriteLine("Geçersiz gün!");
break;
}C#Not: break; komutu, her bir case bloğunun sonunda kullanılır. Aksi takdirde, C# bir sonraki case bloğunu da çalıştırmaya devam eder.
2.3. Switch ile String Kullanımı
switch sadece sayısal değerlerle değil, string gibi veri tipleriyle de kullanılabilir.
string meyve = "Elma";
switch (meyve)
{
case "Elma":
Console.WriteLine("Elma seçildi.");
break;
case "Muz":
Console.WriteLine("Muz seçildi.");
break;
default:
Console.WriteLine("Bilinmeyen meyve.");
break;
}C#2.4. Switch-Case ile Birden Fazla Durum Kullanımı
Bazı durumları tek bir case bloğunda birleştirebiliriz.
char karakter = 'A';
switch (karakter)
{
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
Console.WriteLine("Sesli harf");
break;
default:
Console.WriteLine("Sessiz harf");
break;
}C#2.5. Switch-Case ile when Kullanımı
C# 7.0 ile birlikte when kullanılarak koşullar daha esnek hale getirildi.
int not = 85;
switch (not)
{
case int n when (n >= 90):
Console.WriteLine("Pekiyi");
break;
case int n when (n >= 70):
Console.WriteLine("İyi");
break;
case int n when (n >= 50):
Console.WriteLine("Orta");
break;
default:
Console.WriteLine("Kaldınız");
break;
}C#3. If-Else ve Switch Arasındaki Farklar
| Özellik | If-Else | Switch-Case |
|---|---|---|
| Kullanım Alanı | Her türlü mantıksal karşılaştırmada kullanılır | Tek bir değişkenin belirli sabit değerlerine göre kontrol yapar |
| Veri Türü | Sayısal, mantıksal, string ve daha fazla türü destekler | Genellikle int, char, string gibi belirli türleri destekler |
| Performans | Küçük durumlarda performans farkı yoktur | Büyük sayıda seçenek varsa switch daha performanslıdır |
| Kod Okunabilirliği | Karmaşık koşullar için uygundur | Daha düzenli ve okunaklıdır |
Özet:
- Basit karşılaştırmalarda
if-elsekullanılır. - Tek bir değişkenin sabit değerleri kontrol ediliyorsa
switchtercih edilir. switch-case, büyük veri kümelerindeif-else’e göre daha performanslıdır.