4.6. Switch Statement
4.6.1. Switch Statement
The switch statement is used to select one of many code blocks (“cases”)
to be executed. Logically, it resembles the use of a series of else-if
clauses.
The syntax for switch
statement is as follows:
switch(expression)
{
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
break;
}
Note that:
- The switch expression is evaluated once.
- The value of the expression is compared with the values of each case.
- If there is a match between the expression
value and the case
value, the associated block of code is executed.
- The break
and default
keywords will be described later in this chapter.
As an example, we can use the weekday number to figure out weekday name:
int day = 4;
switch (day)
{
case 1:
Console.WriteLine("Monday");
break;
case 2:
Console.WriteLine("Tuesday");
break;
case 3:
Console.WriteLine("Wednesday");
break;
case 4:
Console.WriteLine("Thursday");
break;
case 5:
Console.WriteLine("Friday");
break;
case 6:
Console.WriteLine("Saturday");
break;
case 7:
Console.WriteLine("Sunday");
break;
}
The outcome of this code will be Thursday. The code will stop
executing because of the break
keyword after the print line.
Also, there is not default case
in this code block.
4.6.2. The default
Keyword
The default keyword is optional and it specifies some code to run if there is no case match:
int day = 4;
switch (day)
{
case 6:
Console.WriteLine("Today is Saturday.");
break;
case 7:
Console.WriteLine("Today is Sunday.");
break;
default:
Console.WriteLine("Looking forward to the Weekend.");
break;
}
// Outputs "Looking forward to the Weekend."
4.6.3. The break
Keyword
When a match is found in a switch statement, the job is done,
it’s time for a break. There is no need for more testing and matching
cases. When C# reaches a break
keyword, it breaks out of the
switch block. This will stop the further sequential execution of
code and case testing inside the block.
A break
can save execution time because it ignores
the execution of all the rest of the code in the switch block. But
more importantly, a break
servers as a terminator of the
control flow. That also means that you may choose to continue
matching cases after one is matched by not placing break at the
end of the case block.