← Kembali ke kursus
Pelajaran kursus · C#
Pelajaran 08

Switch-case

Satu nilai, banyak cabang — lebih rapi dari else-if panjang.

Pahami konsepnya

Ketika satu nilai menghadapi banyak kemungkinan — angka pilihan menu, kode hari, huruf nilai — else-if berantai mulai terasa berdebu. switch lahir untuk itu: nilainya ditulis sekali, tiap case menyandingkan satu kemungkinan, dan default menampung sisanya. Setiap cabang wajib ditutup break; C# melarang jatuh menerus ke case berikutnya seperti bahasa lain.

Kecocokannya presisi dan terbatas: angka, char, string, atau enum — bukan rentang. Artinya switch tidak menggantikan if, melainkan melengkapinya: if untuk pertanyaan rentan ("lebih dari 80?"), switch untuk pertanyaan tepat ("pilihan 1, 2, atau 3?"). Beberapa nilai boleh berbagi cabang dengan ditumpuk case per baris.

Versi modernnya bahkan lebih manis: switch sebagai ekspresi yang mengembalikan nilai. int diskon = hari switch { "senin" => 20, "jumat" => 15, _ => 0 }; — tanda garis bawah adalah defaultnya. Bentuk panjang dan pendek ini pilih sesuai beratnya keputusan; keduanya membaca seperti menu.

Coba contoh kode

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("id-ID");
Console.WriteLine("=== KAFE KODE ===");
Console.WriteLine("1. Kopi    Rp15000");
Console.WriteLine("2. Teh     Rp8000");
Console.WriteLine("3. Susu    Rp12000");
Console.Write("Pilihanmu: ");

int pilih = int.Parse(Console.ReadLine());
string menu;
int harga;

switch (pilih)
{
    case 1:
        menu = "Kopi";  harga = 15000; break;
    case 2:
        menu = "Teh";   harga = 8000;  break;
    case 3:
        menu = "Susu";  harga = 12000; break;
    default:
        menu = "-";     harga = 0;     break;
}

Console.WriteLine($"Kamu memesan {menu} ({harga:C0})");

Satu variabel pilih, empat cabang bersih. Ketik 2 dan "Teh (Rp8.000)" tercetak; ketik 9 dan default menahan agar program tidak jatuh tanpa jawaban. Bandingkan versi else-if-nya — semakin banyak menu, semakin jelas keunggulan keterbacaan switch.

Switch ekspresi (C# 9+, jalankan lokal)

Console.Write("Hari = ");
string hari = Console.ReadLine().ToLower();

int diskon = hari switch
{
    "senin" or "selasa" => 20,
    "jumat"             => 15,
    _                   => 0,
};

Console.WriteLine($"Diskon hari {hari}: {diskon}%");

Bentuk ekspresi mengembalikan nilai tanpa break. Pola "senin" or "selasa" menggabung dua nilai; garis bawah menampung sisanya. Contoh ini memerlukan C# 9+ dan tidak bisa dijalankan di compiler Mono situs; jalankan dengan .NET SDK lokal.

Latihan singkat

Uji: pilihan `3` harus mencetak `C`; pilihan `9` harus mencetak `-`.