C# Switch EnumUse switch on enum variables. Add cases with enum values, which are constants and can be matched in switch.
Switch enum. In C# switch can act upon enum values. An enum switch sometimes results in clearer code. The resulting instructions are sometimes faster as well.
A common pattern. The C# switch-enum code pattern is often effective. It is used in many real-world programs (not just website examples).
Example. Enums help us deal with magic constants. For the switch statement here, look at the IsImportant method—it uses 5 explicit cases and a default case.
IsImportant This method has a switch that tests the Priority enum. It returns true if the Priority value is Important or Critical.
True, False
So You can use the switch here as a kind of filtering mechanism for enum value ranges.
Bool Method
using System; enum Priority { Zero, Low, Medium, Important, Critical }; class Program { static void Main() { // New local variable of the Priority enum type. Priority priority = Priority.Zero; // Set priority to critical on Monday. if (DateTime.Today.DayOfWeek == DayOfWeek.Monday) { priority = Priority.Critical; } // Write this if the priority is important. if (IsImportant(priority)) { Console.WriteLine("The problem is important."); } // See if Low priority is important. priority = Priority.Low; Console.WriteLine(IsImportant(priority)); // See if Important priority is. priority = Priority.Important; Console.WriteLine(IsImportant(priority)); } static bool IsImportant(Priority priority) { // Switch on the Priority enum. switch (priority) { case Priority.Low: case Priority.Medium: case Priority.Zero: default: return false; case Priority.Important: case Priority.Critical: return true; } } }
The problem is important. False True
Internals. How is the enum switch compiled? The C# code is compiled into a special .NET instruction called a jump table. The jump table uses the IL instruction switch.
Switch instruction, IL:
L_0004: switch (L_001f, L_001f, L_001f, L_0023, L_0023)
A recommendation. When you have a set of constants, I recommend you use switch—it can have better performance. And the code is clearer to read.
A summary. We saw examples of how you can switch on enums. Switch can improve performance when it is implemented by a jump table in the MSIL. This is determined by the compiler.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on 6/13/2022 (edit).
© 2007-2022 sam allen.
see site info on the changelog.