Kontrol Yapıları

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

ÖzellikIf-ElseSwitch-Case
Kullanım AlanıHer türlü mantıksal karşılaştırmada kullanılırTek 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ü desteklerGenellikle int, char, string gibi belirli türleri destekler
PerformansKüçük durumlarda performans farkı yokturBüyük sayıda seçenek varsa switch daha performanslıdır
Kod OkunabilirliğiKarmaşık koşullar için uygundurDaha düzenli ve okunaklıdır

Özet:

  • Basit karşılaştırmalarda if-else kullanılır.
  • Tek bir değişkenin sabit değerleri kontrol ediliyorsa switch tercih edilir.
  • switch-case, büyük veri kümelerinde if-else’e göre daha performanslıdır.