Stumbled upon an interesting question on StackOverflow today regarding what goes on under the hood when you use the switch statement in C#.
Based on the answer by Brian Gideon (kudos for doing all that legwork!), for the following code:
public static int Main(string[] args)
{
switch (args[0])
{
case "1": return 1;
case "2": return 2;
case "3": return 3;
}
return 0;
}
the C# compiler will:
- if the number of case statements is small then emit a sequential equality comparison;
- if the number of case statements is large then emit a Dictionary lookup.
Also, on a related question regarding if-else vs. switch statement, the updated answer also seems to confirm this finding (regarding the use of a string in the switch statement at least) and Jon Skeet’s comment to the answer by ‘ima’ suggests that the threshold is 6 before the compiler decides to build a hash table, i.e. case statement count >= 7 then build dictionary.








