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

Switch expressions with patterns in C Sharp (C#) - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a switch expression in C#?
A switch expression is a concise way to select a value based on matching patterns. It returns a value directly and uses the syntax with 'switch' and '=>' arrows.
Click to reveal answer
intermediate
How do patterns enhance switch expressions?
Patterns allow matching on types, values, or conditions inside switch expressions, making them more powerful and expressive than simple value matching.
Click to reveal answer
beginner
Example: What does this switch expression do?
object obj = 5;
string result = obj switch {
  int i => $"Integer {i}",
  string s => $"String {s}",
  _ => "Unknown"
};
It checks the type of obj. If obj is an int, it returns "Integer 5". If obj is a string, it returns "String" plus the string value. Otherwise, it returns "Unknown".
Click to reveal answer
beginner
What does the underscore (_) mean in switch expressions?
The underscore (_) is a discard pattern that matches anything not matched by previous cases. It acts like a default case.
Click to reveal answer
intermediate
Can switch expressions use relational patterns? Give an example.
Yes, switch expressions can use relational patterns like <, >, <=, >=. Example:
int age = 20;
string category = age switch {
  < 13 => "Child",
  < 20 => "Teen",
  _ => "Adult"
};
Click to reveal answer
What keyword starts a switch expression in C#?
Aswitch
Bcase
Cmatch
Dselect
In a switch expression, what does the '=>' symbol mean?
AIt declares a variable
BIt means 'or'
CIt ends the switch
DIt separates the pattern from the result expression
What pattern matches any value not matched before in a switch expression?
Adefault
Bnull
C_
Delse
Which of these is a valid pattern in a switch expression?
Aint = 5
Bint i
Cint => 5
Dint ?
Can switch expressions return values directly?
AYes
BNo
COnly in C# 7
DOnly with enums
Explain how switch expressions with patterns work in C#.
Think about how you choose an option based on matching conditions.
You got /5 concepts.
    Write a simple switch expression that returns "Even" or "Odd" for an integer input.
    Use modulo operator (%) inside a pattern or condition.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does a switch expression with patterns in C# primarily help you do?
      easy
      A. Create loops that run a fixed number of times
      B. Declare variables with dynamic types
      C. Match values and types cleanly without long if-else chains
      D. Handle exceptions in asynchronous code

      Solution

      1. Step 1: Understand switch expressions

        Switch expressions allow matching on values or types in a concise way.
      2. Step 2: Compare with if-else chains

        They replace long if-else chains with clearer, more readable code.
      3. Final Answer:

        Match values and types cleanly without long if-else chains -> Option C
      4. Quick Check:

        Switch expressions = clean matching [OK]
      Hint: Switch expressions simplify matching values and types [OK]
      Common Mistakes:
      • Confusing switch expressions with loops
      • Thinking switch expressions handle exceptions
      • Believing switch expressions declare variables
      2. Which of the following is the correct syntax for a switch expression with a type pattern in C#?
      easy
      A. var result = obj switch { int i => i * 2, string s => s.Length, _ => 0 };
      B. var result = switch obj { int i => i * 2, string s => s.Length, _ => 0 };
      C. var result = obj { int i => i * 2, string s => s.Length, _ => 0 } switch;
      D. var result = obj switch (int i => i * 2, string s => s.Length, _ => 0);

      Solution

      1. Step 1: Identify correct switch expression syntax

        The switch expression syntax is: variable switch { pattern => result, ... }.
      2. Step 2: Match options to syntax

        var result = obj switch { int i => i * 2, string s => s.Length, _ => 0 }; matches this syntax exactly with type patterns and a discard pattern.
      3. Final Answer:

        var result = obj switch { int i => i * 2, string s => s.Length, _ => 0 }; -> Option A
      4. Quick Check:

        Correct switch expression syntax = var result = obj switch { int i => i * 2, string s => s.Length, _ => 0 }; [OK]
      Hint: Remember: variable switch { patterns } is correct syntax [OK]
      Common Mistakes:
      • Placing switch before the variable
      • Using parentheses instead of braces
      • Misplacing the switch keyword
      3. What is the output of the following C# code?
      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

      1. Step 1: Analyze the switch expression input

        The variable 'value' is an object holding the integer 5.
      2. Step 2: Match patterns in order

        First pattern matches int i when i > 0, which is true for 5, so result is "Positive integer".
      3. Final Answer:

        Positive integer -> Option B
      4. 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

      1. Step 1: Check switch expression patterns

        In C# switch expressions, the discard pattern uses '_' not 'default'.
      2. Step 2: Identify the incorrect pattern usage

        The code uses 'default' which causes a syntax error; it should be '_'.
      3. Final Answer:

        Using 'default' instead of '_' for discard pattern -> Option D
      4. 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

      1. Step 1: Understand type patterns and conditions

        We must match int or double first, then string with length checks for empty/non-empty.
      2. 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.
      3. 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
      4. 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 unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard