C# Switch - Case statement is almost same as the if -- else statement.
Let us understand C# Switch - Case with the below example.
| Roll Number | Name |
|---|---|
| 1 | Ronald |
| 2 | John |
| 3 | Murali |
| 4 | Satish |
| 5 | Debasish |
Now, that you are an expert in if --- else. You wrote the program using if --- else.
public class MyApplication
{
public static void Main(string[] args)
{
int rollNumber = 2;
if (rollNumber == 1)
{
System.Console.WriteLine("Ronald");
}
else if (rollNumber == 2)
{
System.Console.WriteLine("John");
}
else if (rollNumber == 3)
{
System.Console.WriteLine("Murali");
}
else if (rollNumber == 4)
{
System.Console.WriteLine("Satish");
}
else if (rollNumber == 5)
{
System.Console.WriteLine("Debasish");
}
else
{
System.Console.WriteLine("The student does not exist.");
}
}
}
So, you wanted to search the name of the student whose roll number is 2.
And you got the output as John.
Now, just think for a moment. What if there were 100 students in your class? You had to write 100 if -- else -- if statements.
Well! The good news is C# provides a replacement for the above case. Where the same variable needs to be compared with several values.
What I meant is, the same variable rollNumber is repeated at every if -- else -- if statements.
And to avoid this repetition, C# switch - case comes to rescue.
So, at first, let us rewrite the above program using C# switch - case. Then we will understand how it works?
public class MyApplication
{
public static void Main(string[] args)
{
int rollNumber = 2;
switch (rollNumber) {
case 1:
System.Console.WriteLine("Ronald");
break;
case 2:
System.Console.WriteLine("John");
break;
case 3:
System.Console.WriteLine("Murali");
break;
case 4:
System.Console.WriteLine("Satish");
break;
case 5:
System.Console.WriteLine("Debasish");
break;
default:
System.Console.WriteLine("The student does not exist.");
break;
}
}
}
Now, if you look at the current code. It is quite cleaner, compared to the if -- else -- if code.
int rollNumber = 2;

There is a switch statement, where we specify the rollNumber.
switch (rollNumber)
Then there are cases, like case 1, case 2, e.t.c.
case 1:
System.Console.WriteLine("Ronald");
break;
case 2:
System.Console.WriteLine("John");
break;
case 3:
System.Console.WriteLine("Murali");
break;
case 4:
System.Console.WriteLine("Satish");
break;
case 5:
System.Console.WriteLine("Debasish");
break;
default:
System.Console.WriteLine("The student does not exist.");
break;And for every case, it checks for the rollNumber(2 in this case as rollNumber=2).
When it finds a match in case 2.
case 2:
System.Console.WriteLine("John");
break;It print "John" and comes out of the switch statement as we have specified a break statement.

switch(expression/variable) {
case value1:
// code for value1
break;
case value2:
// code for value2
break;
default:
// code for default block
break;
}The default block is also an optional block,
default:
System.Console.WriteLine("The student does not exist.");
break;The default block is only executed none of the cases matches. And is exactly same as,
else {
System.Console.WriteLine("The student does not exist.");
}For the if -- else -- if code.
public class MyApplication
{
public static void Main(string[] args)
{
int rollNumber = 10;
switch (rollNumber)
{
case 1:
System.Console.WriteLine("Ronald");
break;
case 2:
System.Console.WriteLine("John");
break;
case 3:
System.Console.WriteLine("Murali");
break;
case 4:
System.Console.WriteLine("Satish");
break;
case 5:
System.Console.WriteLine("Debasish");
break;
default:
System.Console.WriteLine("The student does not exist.");
break;
}
}
}
In the above code, we are checking for the student whose roll number is 10. And since roll number 10 does not exist, the default block is executed.