The generated IL ---------------- // method line 2 .method public static hidebysig default void Main (string[] args) cil managed { // Method begins at RVA 0x20f4 .entrypoint // Code size 54 (0x36) .maxstack 3 .locals init ( int32 V_0, int32 V_1) IL_0000: ldc.i4.3 IL_0001: stloc.0 IL_0002: ldloc.0 IL_0003: stloc.1 IL_0004: ldloc.1 IL_0005: ldc.i4.2 IL_0006: beq IL_0017 IL_000b: ldloc.1 IL_000c: ldc.i4.3 IL_000d: beq IL_0026 IL_0012: br IL_0035 IL_0017: ldstr "2" IL_001c: call void class [mscorlib]System.Console::WriteLine(string) IL_0021: br IL_0035 IL_0026: ldstr "3" IL_002b: call void class [mscorlib]System.Console::WriteLine(string) IL_0030: br IL_0035 IL_0035: ret } // end of method Switcher::default void Main (string[] args) } // end of class Switcher The C# ------ int i = 3; switch (i) { case 2: Console.WriteLine("2"); break; case 3: Console.WriteLine("3"); break; }