0Pricing
C# Academy · Pelajaran

Ekspresi switch

switch ringkas yang mengembalikan nilai.

Ekspresi switch adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.

Apa Itu Ekspresi Pemilihan

Ekspresi pemilihan mengevaluasi sebuah masukan terhadap serangkaian pola dan mengembalikan nilai. Berbeda dari pernyataan pemilihan klasik, ini adalah sebuah ekspresi, sehingga menghasilkan nilai yang dapat Anda tetapkan atau kembalikan.

Ekspresi ini menggunakan kata kunci switch setelah nilai, dengan cabang yang ditulis sebagai pattern => result. Dengan demikian, logika percabangan menjadi ringkas dan fungsional.

int code = 2;
string name = code switch
{
    1 => "One",
    2 => "Two",
    _ => "Other"
};
System.Console.WriteLine(name);

Pernyataan versus Ekspresi

Pernyataan pemilihan lama menggunakan case labels dan break. Ekspresi pemilihan yang lebih baru menghapus kata kunci tersebut sepenuhnya.

Cabang dipisahkan dengan koma, seluruh konstruksi diakhiri titik koma, dan setiap cabang menghasilkan nilai, bukan mengeksekusi blok yang berlanjut ke cabang berikutnya. Ini menghilangkan seluruh kelas bug akibat lupa menulis break.

// Statement style
switch (code) { case 1: result = "One"; break; }

// Expression style
result = code switch { 1 => "One", _ => "?" };

Cabang Pembuangan

Garis bawah _ adalah pola pembuangan. Pola ini cocok dengan apa pun dan berfungsi sebagai kasus bawaan.

Ekspresi pemilihan harus mencakup semua kemungkinan: jika tidak ada cabang yang cocok saat program berjalan, SwitchExpressionException akan dilemparkan. Menambahkan cabang _ menjamin kecocokan untuk setiap masukan yang mungkin.

using System;

class Program {
    static void Main() {
        int n = 7;
        string size = n switch {
            < 5 => "small",
            _ => "big"
        };
        Console.WriteLine(size);
    }
}

Pola Konstanta

Cabang paling sederhana menggunakan pola konstanta: nilai literal yang dibandingkan dengan masukan menggunakan kesetaraan.

Konstanta dapat berupa angka, string, karakter, anggota enumerasi, atau konstanta bernama. Konstanta dievaluasi dari atas ke bawah, jadi order cabang harus dimulai dari yang paling spesifik atau paling umum digunakan.

char grade = 'B';
string label = grade switch
{
    'A' => "Excellent",
    'B' => "Good",
    'C' => "Fair",
    _   => "Needs work"
};
System.Console.WriteLine(label);

Mengembalikan Nilai dari Metode

Ekspresi pemilihan sangat berguna di dalam metode. Karena seluruh konstruksi adalah ekspresi, Anda dapat langsung mengembalikannya dengan return, sering kali sebagai metode berbadan ekspresi satu baris.

Hal ini menjaga logika pemetaan tetap mudah dibaca dan terpusat, alih-alih menyebarkan rangkaian if/else if ke seluruh isi metode.

using System;

class Program {
    static string Day(int d) => d switch {
        0 => "Sun", 6 => "Sat", _ => "Weekday"
    };
    static void Main() => Console.WriteLine(Day(6));
}

Pemilihan Berdasarkan Enumerasi

Enumerasi berpadu secara alami dengan ekspresi pemilihan. Setiap cabang menyebutkan anggota enumerasi, dan kompilator dapat memberi peringatan ketika ada kasus yang hilang jika Anda menghilangkan cabang pembuangan.

Meski begitu, sebaiknya tetap pertahankan cabang _ agar nilai enumerasi yang ditambahkan di masa mendatang tidak menyebabkan aplikasi Anda gagal saat berjalan.

using System;

enum Light { Red, Yellow, Green }

class Program {
    static void Main() {
        Light l = Light.Green;
        string action = l switch {
            Light.Red => "Stop",
            Light.Yellow => "Slow",
            Light.Green => "Go",
            _ => "?"
        };
        Console.WriteLine(action);
    }
}

Klausa Penjaga dengan Kondisi

Penjaga when menambahkan kondisi logika ke sebuah cabang. Cabang tersebut hanya cocok jika pola dan penjaga sama-sama bernilai benar.

Dengan demikian, Anda dapat mempersempit pencocokan menggunakan logika apa pun yang tidak dapat dinyatakan oleh pola saja, misalnya pemeriksaan rentang yang digabungkan dengan variabel lain.

int temp = 30;
string weather = temp switch
{
    int t when t < 0  => "Freezing",
    int t when t < 20 => "Cool",
    _                 => "Warm"
};
System.Console.WriteLine(weather);

Order Itu Penting

Cabang diuji berdasarkan order dalam kode sumber. Cabang pertama yang cocok akan dipilih, jadi pola yang lebih spesifik harus ditempatkan sebelum pola yang lebih umum.

Jika cabang umum mendahului cabang khusus, kompilator melaporkan cabang berikutnya sebagai tidak terjangkau. Bacalah cabang dari atas ke bawah, seperti corong dari yang sempit ke yang luas.

int score = 95;
string tier = score switch
{
    >= 90 => "Gold",
    >= 70 => "Silver",
    _     => "Bronze"
};
System.Console.WriteLine(tier);

Kelengkapan dan Pengecualian

Jika tidak semua masukan tercakup dan tidak ada cabang yang cocok, waktu eksekusi akan melemparkan System.Runtime.CompilerServices.SwitchExpressionException.

Kompilator mengeluarkan peringatan CS8509 ketika tidak dapat membuktikan bahwa semua kemungkinan tercakup. Tanggapi peringatan itu dengan serius: tambahkan cabang pembuangan atau cakup nilai yang hilang agar ekspresi selalu menghasilkan hasil.

using System;

class Program {
    static void Main() {
        try {
            int x = 5;
            string s = x switch { 1 => "a", 2 => "b" };
            Console.WriteLine(s);
        } catch (Exception e) {
            Console.WriteLine(e.GetType().Name);
        }
    }
}

Menggabungkan Beberapa Masukan

Untuk memilih berdasarkan lebih dari satu nilai, bungkus nilai-nilai tersebut dalam tupel. Cabang kemudian mencocokkan pola tupel dengan membandingkan setiap posisi.

Hal ini ideal untuk mesin status atau tabel keputusan yang hasilnya bergantung pada sepasang faktor. Pola tupel akan dibahas secara mendalam dalam pelajaran berikutnya.

bool isWeekend = true; bool isRaining = false;
string plan = (isWeekend, isRaining) switch
{
    (true, false) => "Go hiking",
    (true, true)  => "Watch a movie",
    _             => "Work"
};
System.Console.WriteLine(plan);

Badan Ekspresi yang Mudah Dibaca

Ekspresi pemilihan berpadu dengan baik dengan LINQ dan anggota berbadan ekspresi, sehingga menghasilkan alur pemrosesan yang ringkas.

Karena setiap cabang mengembalikan nilai, Anda dapat menggunakan ekspresi pemilihan langsung di dalam proyeksi Select atau sebagai argumen metode, tanpa memerlukan variabel sementara.

using System;
using System.Linq;

class Program {
    static void Main() {
        var nums = new[] { 1, 2, 3 };
        var labels = nums.Select(n => n switch {
            1 => "one", 2 => "two", _ => "many"
        });
        Console.WriteLine(string.Join(",", labels));
    }
}

Uji Cepat

Uji pemahaman Anda tentang ekspresi pemilihan.

Ringkasan

Ekspresi pemilihan mengembalikan nilai menggunakan input switch { pattern => result, ... } dengan cabang yang dipisahkan koma.

Gunakan _ sebagai nilai bawaan, when sebagai penjaga, dan ingat bahwa cabang diuji dari atas ke bawah. Pastikan semua kemungkinan tercakup untuk menghindari pengecualian saat program berjalan. Berikutnya kita akan mempelajari pola tipe dan properti.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Ekspresi switch” gratis?

Ya — teks lengkap “Ekspresi switch” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Ekspresi switch”?

switch ringkas yang mengembalikan nilai. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C# Academy?

Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Ekspresi switch” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?

Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Ekspresi switch
  2. Pola Tipe dan Properti
  3. Pola Relasional dan Logis
  4. Pola List dan Tuple
← Kembali ke C# Academy