Rehber C#'ta Switch Case Yapısı Öğretici - 4

Bu yazı yardım amaçlı yazılmıştır. Öğretim amaçlı değil. Bu nedenle bazı tanımları anlatmadan geçiyorum.

Bugünkü yazımda çoğu kişinin takıldığı switch-case yapılarını anlatacağım.

Switch-case yapılarını else if yapıları gibi düşünebilirsiniz. Ancak switch-case yapısında her case yapısı sadece bir adet değer kontrol edilebilir. Ayrıca tanımlanan her caseden sonra break kullanılmalıdır. Örneğin;

Komut:
C#:
using System;

class mainClass
{
    public static void Main(string[] args)
    {
        int number = Convert.ToInt32(Console.ReadLine());
        switch (number)
        {
            case 1:
                Console.WriteLine("Durum 1");
                break;
            case 2:
                    Console.WriteLine("Durum 2");
                break;
            default:
                Console.WriteLine("Varsayılan durum");
                break;
        }
    }
}

Çıktı:
Kod:
1
Durum 1
veya
Kod:
2
Durum 2
veya
Kod:
3
Varsayılan durum
veya
Kod:
4
Varsayılan durum

Case; switchin aldığı değerin, kendi değeriyle eşit olup olmadığını sorgular ve ona göre kendi içerisindeki işlemleri yapar.
Eğer hiçbir case işlem döndürmediyse default case içerisindeki işlemleri yapar. Default tanımını, else gibi düşünebiliriz.

@slmgoko ,@pottie4r , @Lony111 ve @wYusufs_INC 'e teşekkürler. Umarım yardımcı olabilmişimdir. Vaktinizi ayırdığınız için teşekkür ederim.
 
Son düzenleme:
Switch yapısı çoğu zaman önceliğim olmuştur. Okunması daha kolay geliyor benim için. @user.cs hocamın verdiği değerli bilgilerle bir kursa başladığınızda yabancılık çekmez ve çok rahat alışırsınız. Kendisine ayıp olmazsa, okuyan ve öğrenmek isteyen birisi bu mesajımı görürse Algoritma çalışmasını da öneririm. Çoğu kurs algoritmayı C# üzerinden verir genelde. İki tarafı çok güzel götürebilirsiniz.
 
Burada şunu anlatmaya çalışıyor:

If yapılarında tüm karşılaştırma operatörleri kullanılabilir. Ancak switch-case yapısında sadece eşitlik kontrol edebiliriz. Yani switch-case yapısının else iften farkı budur.
Yanlış bir anlatım şekli. Switch-case sadece eşitlik kontrol etmez, expression'un döndürdüğü değeri kontrol eder. İçerisine ne girilirse girilsin, bu bir fonksiyon bile olabilir, onun döndürdüğü şeyi case'te arar.
Yani tek operatör = demek, sanki expression olarak eşitlikten başka bir şey aratamıyormuşuz gibi anlaşılıyor.

Örnek olarak;
C#:
int n = 0, a = 5, b = 3;

switch((n == a) || (b != n) || (b > a)) {
    case 1:
        Console.WriteLine("Doğru");
    break;
    case 0:
        Console.WriteLine("Yanlış.")
    break;

}
 
Yanlış bir anlatım şekli. Switch-case sadece eşitlik kontrol etmez, expression'un döndürdüğü değeri kontrol eder. İçerisine ne girilirse girilsin, bu bir fonksiyon bile olabilir, onun döndürdüğü şeyi case'te arar.
Yani tek operatör = demek, sanki expression olarak eşitlikten başka bir şey aratamıyormuşuz gibi anlaşılıyor.

Örnek olarak;
C#:
int n = 0, a = 5, b = 3;

switch((n == a) || (b != n) || (b > a)) {
    case 1:
        Console.WriteLine("Doğru");
    break;
    case 0:
        Console.WriteLine("Yanlış.")
    break;

}
Biliyorum ancak bool işlemler 0 veya 1 olarak değer döndürür. Yani o switchin içine yazdığınız parametre herhangi karşılaştırma ifadesi bulundurabilir. Ama yine de sonuç 1 veya 0'dır. Case sayesinde de bu değeri kontrol ederiz.
 
Biliyorum ancak bool işlemler 0 veya 1 olarak değer döndürür. Yani o switchin içine yazdığınız parametre herhangi karşılaştırma ifadesi bulundurabilir. Ama yine de sonuç 1 veya 0'dır. Case sayesinde de bu değeri kontrol ederiz.
Tek operatör = dediğinde switch içine expression olarak herhangi bir karşılaştırma yazamıyormuşsun gibi anlaşılıyor diyorum bende. Öyle bakarsak olaya, if'te de tek operatör =, while'da da tek operatör =... For'da bile tek operatör =. Bütün kontrol yapıları doğru veya yanlış ilkesiyle çalışıyor. Bu yüzden anlatım yanlış diyorum.
 
Yanlış anlatım şekli tercih ettiğim için özür dilerim. Bir dahakine daha açıklayıcı bir anlatım kullanacağım.
Tek operatör = dediğinde switch içine expression olarak herhangi bir karşılaştırma yazamıyormuşsun gibi anlaşılıyor diyorum bende. Öyle bakarsak olaya, if'te de tek operatör =, while'da da tek operatör =... For'da bile tek operatör =. Bütün kontrol yapıları doğru veya yanlış ilkesiyle çalışıyor. Bu yüzden anlatım yanlış diyorum.
Eleştiriniz için teşekkür ederim.
 

Geri
Yukarı