A common feature of many programming languages, including C#, is the switch statement. It provides a concise way to handle multiple conditions within a code block. But as programming languages evolve, new features are added to improve the readability, maintainability, and effectiveness of code. Switch Expressions are one such feature that was added in C# 8.0, which offers a more concise syntax and additional capabilities compared to traditional switch statements.

When was it launched?

Switch Expressions were introduced in C# 8.0, which was released in September 2019. This version of C# brought several new features and enhancements, with switch expressions being one of the most notable additions.

How to use Switch Expressions?

Code is easier to read and write in C# when switch expressions are used instead of switch statements because of their more concise syntax.

Here are some examples showcasing different functionalities of switch expressions.

Simple Example

int day = 3;
string message = day switch
{
    1 => "Monday",
    2 => "Tuesday",
    3 => "Wednesday",
    _ => "Weekend" // Default case using underscore (_)
};

Console.WriteLine(message); // Output: Wednesday

Pattern Matching with Enums

enum TrafficLight { Red, Yellow, Green }

TrafficLight light = TrafficLight.Yellow;
string action = light switch
{
    TrafficLight.Red => "Stop",
    TrafficLight.Yellow => "Caution",
    TrafficLight.Green => "Go"
};

Console.WriteLine(action); // Output: Caution

Case Guards for Additional Conditions

int number = 10;
string result = number switch
{
    int n when (n % 2 == 0) => "Even",
    int n => "Odd",
    _ => "Invalid"
};

Console.WriteLine(result); // Output: Even

Returning Values from Switch Expressions

Unlike traditional switch statements, switch expressions themselves don’t directly contain return statements within each case. However, they can still be used to return values in a concise way. Here's how,

Implicit Return

Each case of the switch expression can directly return a value that matches the expected return type of the expression.

Example

int number = 5;
string message = number switch
{
    1 => "One",
    2 => "Two",
    _ => "More than two"
};

Console.WriteLine(message); // Output: More than two (since 5 is not 1 or 2)

Explicit Return with Calculations

You can perform calculations within a case and return the result.

Example

double length = 10;
double pricePerMeter = 5;
double totalPrice = length switch
{
    double l when l > 0 => l * pricePerMeter,
    _ => throw new ArgumentException("Invalid length")
};

Console.WriteLine(totalPrice); // Output: 50

Important points

Key differences

Syntax

  1. Switch Statements: Traditionally, switch statements in C# have a verbose syntax, requiring the use of the case and break keywords for each case and a default case for handling unmatched values.
    switch (variable)
    {
        case value1:
            // statements
            break;
        case value2:
            // statements
            break;
        // more cases
        default:
            // default statements
            break;
    }
  2. Switch Expressions: Switch expressions offer a more concise syntax using the => arrow syntax. They eliminate the need for explicit break statements and allow for a default case using the wildcard.
    variable switch
    {
        value1 => // expression,
        value2 => // expression,
        // more cases
        _ => // default expression
    };

Type Inference

Use in Lambda Expressions

Compile-Time Checking

Null Handling

Conclusion

Switch expressions bring simplicity and clarity to your code, making it easier to maintain and understand. As you continue to work with C#, integrating switch expressions will become a natural choice, streamlining your coding process and improving readability."

keep learning!