C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Example: This code demonstrates the case keyword used in different ways. A string switch statement is shown.
String SwitchCases: The first 3 cases are stacked on top of each other. This syntax can match multiple cases to a single executable code block.
Note: At the end of each case statement block, you must have a break, return or goto jump statement for the program to compile.
BreakReturnGotoDefault: The default case does not use the "case" keyword. It is the case that is matched when no other cases do.
C# program that uses case statements in switch
using System;
class Program
{
static string TestCase(string value)
{
const string _special = "constant";
// Begin the switch.
switch (value)
{
case "100":
case "1000":
case "10000":
{
// You can use the parentheses in a case body.
return "Multiple of ten";
}
case "500":
case "5000":
case "50000":
// You can omit the parentheses and stack the cases.
return "Multiple of fifty";
case _special:
// You can use a constant identifier in the case.
return "*";
default:
// You can use the default case.
return "Invalid";
}
}
static void Main()
{
// Test the method.
Console.WriteLine(TestCase("100"));
Console.WriteLine(TestCase("1000"));
Console.WriteLine(TestCase("5000"));
Console.WriteLine(TestCase("constant"));
Console.WriteLine(TestCase(null));
}
}
Output
Multiple of ten
Multiple of ten
Multiple of fifty
*
Invalid
So: We cannot use string.Empty in a case statement. Other fields in a class also cannot be cases.
Error: The C# compiler will report the error to us before the program is ever run. This is helpful.
C# program that shows constant error
class Program
{
static void Main(string[] args)
{
switch (args[0])
{
case string.Empty:
break;
}
}
}
Output
Error CS0150
A constant value is expected
And: There is no difference in the compiled program if you omit the parentheses.
Also: The switch statement also shows how to use a constant field or local constant in the case statements.
Compiler: The C# compiler will internally treat this constant the same way as explicitly specified constants in other cases.
constBut: You can still stack together multiple cases. This limitation was added to the language to reduce programming mistakes.