Switch statements in C# provide a way to execute different parts of code based on the value of a variable. They are a more readable alternative to multiple if-else statements when you need to compare a variable against several possible values.
Key Concepts
- Syntax: The basic structure of a switch statement.
- Case Labels: Define the possible values the variable can take.
- Break Statement: Prevents fall-through to subsequent cases.
- Default Case: Executes if none of the case labels match the variable's value.
- Pattern Matching: Advanced feature for more complex conditions.
Basic Syntax
switch (variable)
{
case value1:
// Code to execute if variable == value1
break;
case value2:
// Code to execute if variable == value2
break;
// More cases...
default:
// Code to execute if none of the above cases match
break;
}Example
Let's look at a practical example to understand how switch statements work.
using System;
class Program
{
static void Main()
{
int dayOfWeek = 3;
switch (dayOfWeek)
{
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;
default:
Console.WriteLine("Invalid day");
break;
}
}
}Explanation
- Variable:
dayOfWeekis the variable being evaluated. - Case Labels: Each
caserepresents a possible value ofdayOfWeek. - Break Statement: Ensures that once a matching case is found, the switch statement exits.
- Default Case: Handles any values not explicitly covered by the case labels.
Practical Exercises
Exercise 1: Basic Switch Statement
Write a program that takes an integer input from the user and prints the corresponding month name. If the input is not between 1 and 12, print "Invalid month".
Solution
using System;
class Program
{
static void Main()
{
Console.Write("Enter a month number (1-12): ");
int month = int.Parse(Console.ReadLine());
switch (month)
{
case 1:
Console.WriteLine("January");
break;
case 2:
Console.WriteLine("February");
break;
case 3:
Console.WriteLine("March");
break;
case 4:
Console.WriteLine("April");
break;
case 5:
Console.WriteLine("May");
break;
case 6:
Console.WriteLine("June");
break;
case 7:
Console.WriteLine("July");
break;
case 8:
Console.WriteLine("August");
break;
case 9:
Console.WriteLine("September");
break;
case 10:
Console.WriteLine("October");
break;
case 11:
Console.WriteLine("November");
break;
case 12:
Console.WriteLine("December");
break;
default:
Console.WriteLine("Invalid month");
break;
}
}
}Exercise 2: Switch with Pattern Matching
Write a program that takes a string input representing a shape ("circle", "square", "triangle") and prints the number of sides. Use pattern matching in the switch statement.
Solution
using System;
class Program
{
static void Main()
{
Console.Write("Enter a shape (circle, square, triangle): ");
string shape = Console.ReadLine().ToLower();
switch (shape)
{
case "circle":
Console.WriteLine("A circle has 0 sides.");
break;
case "square":
Console.WriteLine("A square has 4 sides.");
break;
case "triangle":
Console.WriteLine("A triangle has 3 sides.");
break;
default:
Console.WriteLine("Unknown shape");
break;
}
}
}Common Mistakes and Tips
- Forgetting the
breakstatement: This can cause unintended fall-through behavior. - Not handling all possible values: Always include a
defaultcase to handle unexpected values. - Case Sensitivity: Remember that string comparisons in switch statements are case-sensitive unless explicitly handled.
Conclusion
Switch statements are a powerful tool for controlling the flow of your program based on the value of a variable. They make your code more readable and maintainable compared to multiple if-else statements. Practice using switch statements with different data types and scenarios to become proficient in their use.
C# Programming Course
Module 1: Introduction to C#
- Introduction to C#
- Setting Up the Development Environment
- Hello World Program
- Basic Syntax and Structure
- Variables and Data Types
Module 2: Control Structures
Module 3: Object-Oriented Programming
- Classes and Objects
- Methods
- Constructors and Destructors
- Inheritance
- Polymorphism
- Encapsulation
- Abstraction
Module 4: Advanced C# Concepts
- Interfaces
- Delegates and Events
- Generics
- Collections
- LINQ (Language Integrated Query)
- Asynchronous Programming
Module 5: Working with Data
Module 6: Advanced Topics
- Reflection
- Attributes
- Dynamic Programming
- Memory Management and Garbage Collection
- Multithreading and Parallel Programming
