0Pricing
C# Academy · Pelajaran

Ekspresi switch; pemeriksaan menyeluruh dengan when (emulasi C# 6)

Emulasikan ekspresi switch dengan metode klasik yang mengembalikan nilai dari switch, tambahkan pemeriksaan penjaga, dan gunakan lemparan default untuk menangkap kasus yang tidak ditangani saat runtime.

Ekspresi switch; pemeriksaan menyeluruh dengan when (emulasi C# 6) adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. 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 3 pelajaran total.

Rencana: emulasi switch

Tujuan: Meniru ekspresi switch modern dalam C# 6.

  • Mengembalikan nilai dari switch klasik
  • Melakukan pemeriksaan awal dengan pengaman
  • Gagal cepat melalui default throw untuk memastikan semua kasus tercakup

Switch yang mengembalikan nilai

Percabangan yang mengembalikan nilai bertindak seperti ekspresi percabangan. Default yang melempar pengecualian menangani nilai yang tidak dikenal.

using System;

public enum Grade { A, B, C, D, F }

public class Program
{
  static string Describe(Grade g)
  {
    switch (g)
    {
      case Grade.A: return "Excellent";
      case Grade.B: return "Good";
      case Grade.C: return "Average";
      case Grade.D: return "Below average";
      case Grade.F: return "Fail";
      default: throw new ArgumentOutOfRangeException("g");
    }
  }

  public static void Main(string[] args)
  {
    Console.WriteLine(Describe(Grade.A));
    Console.WriteLine(Describe(Grade.F));
  }
}

Kondisi melalui penjaga

Gunakan pemeriksaan penjaga (if) untuk meniru klausa bersyarat. Validasi input terlebih dahulu, lalu lakukan percabangan berdasarkan rentang nilai.

using System;

public class Program
{
  // Emulate: switch(score) { case var s when s >= 90: ... } using pre-guards
  static string LabelScore(int score)
  {
    if (score < 0 || score > 100) throw new ArgumentOutOfRangeException("score");

    if (score >= 90) return "A";
    if (score >= 80) return "B";
    if (score >= 70) return "C";
    if (score >= 60) return "D";
    return "F";
  }

  public static void Main(string[] args)
  {
    Console.WriteLine(LabelScore(92)); // A
    Console.WriteLine(LabelScore(77)); // C
  }
}

Pembantu Exhaustive.Unhandled

Tambahkan pembantu kecil Exhaustive.Unhandled dan panggil di bagian default. Pengujian akan gagal ketika nilai enum baru tidak ditangani.

using System;

public enum Status { New, Active, Closed }

public static class Exhaustive
{
  public static Exception Unhandled(object x)
  {
    return new InvalidOperationException("Unhandled case: " + x);
  }
}

public class Program
{
  static int ToHttp(Status s)
  {
    switch (s)
    {
      case Status.New: return 201;
      case Status.Active: return 200;
      case Status.Closed: return 410;
      default: throw Exhaustive.Unhandled(s);
    }
  }

  public static void Main(string[] args)
  {
    Console.WriteLine(ToHttp(Status.Active)); // 200
  }
}

Penjaga + percabangan berdasarkan jenis

Validasi data tiap cabang dengan pemeriksaan awal, lalu lakukan percabangan berdasarkan pembeda. Cara ini menyerupai kondisi ketika pada setiap kasus.

using System;

public enum ShapeKind { Circle, Square }

public sealed class Shape
{
  public ShapeKind Kind;
  public double Radius; // for circle
  public double Side;   // for square
}

public class Program
{
  static double Area(Shape s)
  {
    if (s == null) throw new ArgumentNullException("s");

    // “when” guards (validate needed fields)
    if (s.Kind == ShapeKind.Circle && s.Radius < 0) throw new ArgumentException("Radius must be >= 0");
    if (s.Kind == ShapeKind.Square && s.Side < 0) throw new ArgumentException("Side must be >= 0");

    switch (s.Kind)
    {
      case ShapeKind.Circle: return Math.PI * s.Radius * s.Radius;
      case ShapeKind.Square: return s.Side * s.Side;
      default: throw new InvalidOperationException("Unhandled shape: " + s.Kind);
    }
  }

  public static void Main(string[] args)
  {
    Shape c = new Shape { Kind = ShapeKind.Circle, Radius = 2.0 };
    Console.WriteLine("Area circle = " + Area(c));
  }
}

Kiat & jebakan

Kiat:

  • Utamakan metode kecil yang mengembalikan nilai (tanggung jawab tunggal)
  • Pertahankan default yang melempar pengecualian agar kasus yang terlewat segera terlihat
  • Tempatkan penjaga sebelum percabangan; penjaga bertindak seperti kondisi ketika

Peniruan kelengkapan kasus

Pemeriksaan cepat: Dalam C# 6, bagaimana Anda dapat meniru penanganan percabangan yang lengkap, serupa dengan ekspresi percabangan yang memiliki kondisi ketika?

Ringkasan

Ringkasan: Kembalikan nilai dari percabangan klasik seperti pada ekspresi percabangan, tambahkan penjaga untuk kondisi ketika, dan pertahankan default yang melempar pengecualian agar kasus yang terlewat terlihat.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Ekspresi switch; pemeriksaan menyeluruh dengan when (emulasi C# 6)” gratis?

Ya — teks lengkap “Ekspresi switch; pemeriksaan menyeluruh dengan when (emulasi C# 6)” 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 3 pelajaran total.

Apa yang akan aku pelajari di “Ekspresi switch; pemeriksaan menyeluruh dengan when (emulasi C# 6)”?

Emulasikan ekspresi switch dengan metode klasik yang mengembalikan nilai dari switch, tambahkan pemeriksaan penjaga, dan gunakan lemparan default untuk menangkap kasus yang tidak ditangani saat runti… 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 2 dari 3.

Berapa lama pelajaran “Ekspresi switch; pemeriksaan menyeluruh dengan when (emulasi C# 6)” 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. Pola is; pola relasional & logika (emulasi C# 6)
  2. Ekspresi switch; pemeriksaan menyeluruh dengan when (emulasi C# 6)
  3. Pemodelan domain dengan union terdiskriminasi (record) — emulasi C# 6
← Kembali ke C# Academy