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
- is patterns; relational & logical patterns (C# 6 emulation)
- switch expressions; exhaustive checks with when (C# 6 emulation)
- Domain modeling with discriminated unions (records) — C# 6 emulation