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 `-`.