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.