A switch expression is a concise way to select a value based on a pattern match, introduced in C# 8.0. It returns a value directly instead of using statements.
Click to reveal answer
beginner
How does a switch expression differ from a traditional switch statement?
A switch expression returns a value and is used inline, while a switch statement executes code blocks and does not return a value directly.
Click to reveal answer
beginner
What symbol is used to separate the input and the result in a switch expression case?
The '=>' symbol is used to separate the input pattern from the result expression in each case of a switch expression.
Click to reveal answer
intermediate
Can switch expressions in C# use pattern matching?
Yes, switch expressions support pattern matching, allowing you to match types, values, and conditions directly in the cases.
Click to reveal answer
intermediate
What happens if no case matches in a switch expression and no default case is provided?
If no case matches and there is no default case (using '_'), the switch expression throws a System.Runtime.CompilerServices.SwitchExpressionException at runtime.
Click to reveal answer
Which symbol is used to separate the pattern and result in a C# switch expression?
A=>
B:
C->
D=
✗ Incorrect
The '=>' symbol separates the input pattern from the output expression in each case of a switch expression.
What does a switch expression return?
AAn exception always
BA value based on the matched case
CA boolean indicating if a case matched
DNothing, it only executes code blocks
✗ Incorrect
Switch expressions return a value directly based on the matched case.
Which C# version introduced switch expressions?
AC# 7.0
BC# 6.0
CC# 9.0
DC# 8.0
✗ Incorrect
Switch expressions were introduced in C# 8.0.
What keyword is used as a default case in switch expressions?
A_
Bdefault
Celse
Dcase
✗ Incorrect
The underscore '_' is used as a discard pattern to represent the default case in switch expressions.
Can switch expressions use pattern matching with types?
AOnly with strings
BNo
CYes
DOnly with integers
✗ Incorrect
Switch expressions support pattern matching with types, values, and conditions.
Explain how a switch expression works in modern C# and give a simple example.
Think about how you choose an option and get a result in one line.
You got /4 concepts.
Describe the difference between a switch statement and a switch expression in C#.
One is like a list of instructions, the other is like a calculator.
You got /4 concepts.
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
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.
Step 2: Recognize it as the default case
This means it acts like a default or fallback case to handle all other inputs.
Final Answer:
It acts as a default case to catch all unmatched values. -> Option C
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
Step 1: Identify correct switch expression syntax
In modern C#, switch expressions use the syntax: variable switch { pattern => result, ... }.
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.
Final Answer:
var result = number switch { 2 => "Even", 4 => "Even", 1 => "Odd", 3 => "Odd" }; -> Option B
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
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.
Step 2: Find the corresponding string for case 3
The case 3 returns "Wednesday". Since it matches, the default case _ is ignored.
Final Answer:
Wednesday -> Option A
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
Step 1: Check syntax for default case in switch expressions
Modern C# switch expressions use _ as the default case, not the keyword default.
Step 2: Identify the incorrect use of 'default'
The code uses default => "Other", which is invalid syntax in switch expressions.
Final Answer:
Using 'default' keyword instead of '_' for default case. -> Option A
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
Step 1: Understand pattern matching syntax in switch expressions
Modern C# supports relational patterns like < 10 and logical patterns like and to combine conditions.
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".
Final Answer:
var size = number switch { < 10 => "Small", >= 10 and <= 20 => "Medium", _ => "Large" }; -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.