C# Switch

C# switch statement is used to execute a block of statements among different blocks, based on the matching of an expression with case value.

Syntax of switch statement

Following is the syntax of C# switch statement.

</>
Copy
	switch(match_expression) {
		case value1:
			statement(s);
			break;
		case value2:
			statement(s);
			break;
		case valueN:
			statement(s);
			break;
		default:
			statement(s);
			break;
	}

match_expression should evaluate to a non-null value.

There could be multiple case blocks.

Each case block ends with a break statement.

The default block is optional. When no case block is executed, default block is executed.

No two case blocks can have the same matching value. It could result in a build error.

Example 1 – C# Switch

Following is a simple example for C# switch.

Program.cs

</>
Copy
using System;

namespace CSharpExamples {

    class Program {
        static void Main(string[] args) {
            Console.Write("Enter a value [1-3]: ");
            int a = Convert.ToInt32(Console.ReadLine());

            switch(a){
                case 1:
                    Console.WriteLine("One");
                    break;
                case 2:
                    Console.WriteLine("Two");
                    break;
                case 3:
                    Console.WriteLine("One");
                    break;
            }
        }
    }
}

Output

PS D:\workspace\csharp\HelloWorld> dotnet run
Enter a value [1-3]: 2
Two

In this example, 2 is given as input. match_expression is 2. So the case block with matching value 2 is run.

Switch with Multiple Cases containing same Matching Value

When you write case statements with a same matching value, you will get a build error.

Program.cs

</>
Copy
using System;

namespace CSharpExamples {

    class Program {
        static void Main(string[] args) {
            Console.Write("Enter a value [1-3]: ");
            int a = Convert.ToInt32(Console.ReadLine());

            switch(a){
                case 1:
                    Console.WriteLine("One");
                    break;
                case 1:
                    Console.WriteLine("One");
                    break;
                case 3:
                    Console.WriteLine("One");
                    break;
            }
        }
    }
}

Output

PS D:\workspace\csharp\HelloWorld> dotnet run
Program.cs(14,17): error CS0152: The switch statement contains multiple cases with the label value '1' [D:\workspace\csharp\HelloWorld\HelloWorld.csproj]

The build failed. Please fix the build errors and run again.