object value = 5;
string result = value switch
{
int i when i > 0 => "Positive integer",
int i when i < 0 => "Negative integer",
string s => "String",
_ => "Unknown"
};
Console.WriteLine(result);
medium
A. Negative integer
B. Positive integer
C. String
D. Unknown
Solution
Step 1: Analyze the switch expression input
The variable 'value' is an object holding the integer 5.
Step 2: Match patterns in order
First pattern matches int i when i > 0, which is true for 5, so result is "Positive integer".
Final Answer:
Positive integer -> Option B
Quick Check:
5 > 0 matches first pattern [OK]
Hint: Check pattern order and conditions carefully [OK]
Common Mistakes:
Ignoring the 'when' condition
Assuming string pattern matches first
Choosing default case incorrectly
4. Identify the error in this switch expression code snippet:
object obj = "hello";
var output = obj switch
{
int i => i.ToString(),
string s => s.ToUpper(),
default => "none"
};
medium
A. Patterns must be in parentheses
B. Missing semicolon after switch expression
C. Cannot switch on object type
D. Using 'default' instead of '_' for discard pattern
Solution
Step 1: Check switch expression patterns
In C# switch expressions, the discard pattern uses '_' not 'default'.
Step 2: Identify the incorrect pattern usage
The code uses 'default' which causes a syntax error; it should be '_'.
Final Answer:
Using 'default' instead of '_' for discard pattern -> Option D
Quick Check:
Discard pattern = '_' not 'default' [OK]
Hint: Use '_' for default case in switch expressions [OK]
Common Mistakes:
Using 'default' keyword in switch expressions
Confusing switch statements with switch expressions
Forgetting to end statements with semicolon
5. Given a list of objects, write a switch expression that returns: - "Number" if the object is an int or double - "Text" if the object is a non-empty string - "Empty" if the object is an empty string - "Other" for anything else
Which of the following switch expressions correctly implements this logic?
hard
A. obj switch { int _ or double _ => "Number", string s when s.Length == 0 => "Empty", string s when s.Length > 0 => "Text", _ => "Other" }
B. obj switch { int or double => "Number", string s when s == "" => "Empty", string s when s != "" => "Text", _ => "Other" }
C. obj switch { int or double => "Number", string s when s.Length > 0 => "Text", string s when s.Length == 0 => "Empty", _ => "Other" }
D. obj switch { int or double => "Number", string s when s != "" => "Text", string s when s == "" => "Empty", _ => "Other" }
Solution
Step 1: Understand type patterns and conditions
We must match int or double first, then string with length checks for empty/non-empty.
Step 2: Check order and conditions
obj switch { int _ or double _ => "Number", string s when s.Length == 0 => "Empty", string s when s.Length > 0 => "Text", _ => "Other" } correctly checks int or double, then string with Length == 0 for "Empty", then Length > 0 for "Text", then default.
Final Answer:
obj switch { int _ or double _ => "Number", string s when s.Length == 0 => "Empty", string s when s.Length > 0 => "Text", _ => "Other" } -> Option A
Quick Check:
Order and conditions matter in switch patterns [OK]
Hint: Order patterns from specific to general, check string length for empty [OK]
Common Mistakes:
Using 'or' incorrectly without parentheses
Checking string emptiness with == "" instead of Length
Placing empty string check after non-empty
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.