0Pricing
C# Academy · Lesson

switch expressions; exhaustive checks with when (C# 6 emulation)

Emulate switch expressions with classic switch-return methods, add guard checks, and use default throws to catch unhandled cases at runtime.

Plan: switch emulation

Goal: Mimic modern switch expressions in C# 6.

  • Return values from classic switch
  • Pre-check with guards
  • Fail fast via default throw for exhaustiveness

Switch returning a value

A switch that returns a value acts like a switch expression. The default throw catches unknown values.

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));
  }
}

All lessons in this course

  1. is patterns; relational & logical patterns (C# 6 emulation)
  2. switch expressions; exhaustive checks with when (C# 6 emulation)
  3. Domain modeling with discriminated unions (records) — C# 6 emulation
← Back to C# Academy