Bird
Raised Fist0
C Sharp (C#)programming~10 mins

Switch expression (modern C#) - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Switch expression (modern C#)
Start with input value
↓
Evaluate switch expression
↓
Match input to pattern/case
↓
Return corresponding result
↓
End with output value
The switch expression takes an input, matches it against patterns, and returns the result of the matched case.
Execution Sample
C Sharp (C#)
string day = "Tuesday";
string type = day switch
{
    "Monday" => "Start of week",
    "Tuesday" => "Second day",
    _ => "Other day"
};
This code uses a switch expression to assign a description based on the day string.
Execution Table
StepInput (day)Switch Case CheckedMatch?Result Assigned
1"Tuesday""Monday"NoNone
2"Tuesday""Tuesday"Yes"Second day"
3N/AStop checkingN/A"Second day"
💡 Match found at step 2, switch expression returns "Second day" and stops.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
day"Tuesday""Tuesday""Tuesday""Tuesday"
typenullnull"Second day""Second day"
Key Moments - 2 Insights
Why does the switch expression stop checking after matching "Tuesday"?
Because switch expressions return the result immediately when a match is found, as shown in execution_table step 2 and 3.
What does the underscore (_) mean in the switch expression?
It means 'any other value' or default case, used if no other case matches, but here it is not reached because "Tuesday" matches earlier.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'type' after step 1?
A"Start of week"
Bnull
C"Second day"
D"Other day"
💡 Hint
Check the 'Result Assigned' column at step 1 in the execution_table.
At which step does the switch expression find a match?
AStep 2
BStep 1
CStep 3
DNo match found
💡 Hint
Look at the 'Match?' column in the execution_table.
If the input day was "Friday", what would the switch expression return?
A"Start of week"
B"Second day"
C"Other day"
Dnull
💡 Hint
Consider the underscore (_) case as the default in the switch expression.
Concept Snapshot
Switch expression syntax:
var result = input switch
{
  pattern1 => value1,
  pattern2 => value2,
  _ => defaultValue
};
It matches input to patterns and returns the matching value immediately.
Full Transcript
This example shows how a modern C# switch expression works. We start with a string variable 'day' set to "Tuesday". The switch expression checks each case in order: first "Monday", then "Tuesday". When it finds "Tuesday", it returns "Second day" immediately and stops checking further cases. The underscore (_) is a catch-all for any other value but is not reached here. The variable 'type' gets assigned the result of the switch expression. This flow helps write clear and concise code for matching values to results.

Practice

(1/5)
1. What is the purpose of the _ symbol in a modern C# switch expression?
easy
A. It declares a new variable inside the switch.
B. It marks the end of the switch expression.
C. It acts as a default case to catch all unmatched values.
D. It is used to separate multiple cases.

Solution

  1. Step 1: Understand the role of _ in switch expressions

    The underscore _ is used as a discard pattern that matches any value not matched by previous cases.
  2. Step 2: Recognize it as the default case

    This means it acts like a default or fallback case to handle all other inputs.
  3. Final Answer:

    It acts as a default case to catch all unmatched values. -> Option C
  4. Quick Check:

    _ = default case [OK]
Hint: Remember '_' means 'anything else' or default [OK]
Common Mistakes:
  • Thinking '_' declares a variable
  • Confusing '_' with case separator
  • Assuming '_' ends the switch
2. Which of the following is the correct syntax for a simple switch expression in C# that returns "Even" for 2 and 4, and "Odd" for 1 and 3?
easy
A. var result = switch(number) { 2: "Even", 4: "Even", 1 => "Odd", 3 => "Odd" };
B. var result = number switch { 2 => "Even", 4 => "Even", 1 => "Odd", 3 => "Odd" };
C. var result = number switch (2 => "Even", 4 => "Even", 1 => "Odd", 3 => "Odd");
D. var result = number switch { case 2: "Even"; case 4: "Even"; case 1: "Odd"; case 3: "Odd"; };

Solution

  1. Step 1: Identify correct switch expression syntax

    In modern C#, switch expressions use the syntax: variable switch { pattern => result, ... }.
  2. Step 2: Compare options to syntax

    var result = number switch { 2 => "Even", 4 => "Even", 1 => "Odd", 3 => "Odd" }; matches this syntax exactly. Options B, C, and D use incorrect syntax like parentheses or keywords not used in switch expressions.
  3. Final Answer:

    var result = number switch { 2 => "Even", 4 => "Even", 1 => "Odd", 3 => "Odd" }; -> Option B
  4. Quick Check:

    Correct switch expression syntax = var result = number switch { 2 => "Even", 4 => "Even", 1 => "Odd", 3 => "Odd" }; [OK]
Hint: Switch expressions use curly braces and => for cases [OK]
Common Mistakes:
  • Using parentheses instead of braces
  • Using 'case' keyword inside switch expression
  • Using colons instead of =>
3. What is the output of the following C# code?
int day = 3;
string dayName = day switch
{
  1 => "Monday",
  2 => "Tuesday",
  3 => "Wednesday",
  _ => "Unknown"
};
Console.WriteLine(dayName);
medium
A. Wednesday
B. Monday
C. Unknown
D. Tuesday

Solution

  1. Step 1: Match the value of day in the switch expression

    The variable day is 3, so the switch expression looks for the case matching 3.
  2. Step 2: Find the corresponding string for case 3

    The case 3 returns "Wednesday". Since it matches, the default case _ is ignored.
  3. Final Answer:

    Wednesday -> Option A
  4. Quick Check:

    day=3 matches 3 => "Wednesday" [OK]
Hint: Match the variable value to the case pattern [OK]
Common Mistakes:
  • Choosing default case instead of matching case
  • Confusing case numbers with strings
  • Ignoring the switch expression syntax
4. Identify the error in this switch expression code snippet:
string result = value switch
{
  1 => "One",
  2 => "Two",
  3 => "Three",
  default => "Other"
};
medium
A. Using 'default' keyword instead of '_' for default case.
B. Switch expression must use parentheses, not braces.
C. Missing comma after case 3.
D. The variable 'value' is not declared.

Solution

  1. Step 1: Check syntax for default case in switch expressions

    Modern C# switch expressions use _ as the default case, not the keyword default.
  2. Step 2: Identify the incorrect use of 'default'

    The code uses default => "Other", which is invalid syntax in switch expressions.
  3. Final Answer:

    Using 'default' keyword instead of '_' for default case. -> Option A
  4. Quick Check:

    Default case = '_' not 'default' [OK]
Hint: Use '_' for default, not 'default' keyword [OK]
Common Mistakes:
  • Using 'default' instead of '_'
  • Forgetting commas between cases
  • Confusing switch statement syntax with switch expression
5. You want to write a switch expression that returns "Small" for numbers less than 10, "Medium" for numbers between 10 and 20 inclusive, and "Large" for numbers greater than 20. Which of the following switch expressions correctly implements this?
hard
A. var size = number switch { < 10 => "Small", 10 <= number <= 20 => "Medium", _ => "Large" };
B. var size = number switch { < 10 => "Small", > 10 => "Medium", _ => "Large" };
C. var size = number switch { < 10 => "Small", > 10 and < 20 => "Medium", _ => "Large" };
D. var size = number switch { < 10 => "Small", >= 10 and <= 20 => "Medium", _ => "Large" };

Solution

  1. Step 1: Understand pattern matching syntax in switch expressions

    Modern C# supports relational patterns like < 10 and logical patterns like and to combine conditions.
  2. Step 2: Check each option for correct range coverage

    var size = number switch { < 10 => "Small", >= 10 and <= 20 => "Medium", _ => "Large" }; uses < 10 for "Small", and >= 10 and <= 20 for "Medium", which correctly covers 10 to 20 inclusive. The default _ covers "Large".
  3. Final Answer:

    var size = number switch { < 10 => "Small", >= 10 and <= 20 => "Medium", _ => "Large" }; -> Option D
  4. Quick Check:

    Use relational and logical patterns for ranges [OK]
Hint: Use 'and' to combine conditions in switch patterns [OK]
Common Mistakes:
  • Using invalid syntax like '10 <= number <= 20'
  • Missing inclusive range boundaries
  • Using overlapping or incorrect ranges
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard