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

Property patterns in C Sharp (C#) - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Property patterns
Start with an object
↓
Check property values
↓
Match pattern?
↓
Execute true
↓
End
Property patterns check if an object's properties match specified values, then decide the flow based on the match.
Execution Sample
C Sharp (C#)
record Person(string Name, int Age);

var person = new Person("Alice", 30);

if (person is { Name: "Alice", Age: 30 })
    Console.WriteLine("Match found");
else
    Console.WriteLine("No match");
This code checks if the person object has Name "Alice" and Age 30, then prints a message accordingly.
Execution Table
StepExpression EvaluatedProperty CheckedValue FoundCondition ResultBranch TakenOutput
1person is { Name: "Alice", Age: 30 }Name"Alice"MatchesContinue
2person is { Name: "Alice", Age: 30 }Age30MatchesContinue
3if conditionN/AN/ATrueTrue branchMatch found
💡 All property checks matched, so the if condition is true and 'Match found' is printed.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
person.Name"Alice""Alice""Alice""Alice"
person.Age30303030
Key Moments - 2 Insights
Why does the pattern check both Name and Age properties?
Because the pattern requires all specified properties to match for the condition to be true, as shown in execution_table rows 1 and 2.
What happens if one property does not match?
The condition becomes false and the else branch runs, as the pattern requires all properties to match (see exit_note).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of person.Name at Step 1?
A"Bob"
B"Alice"
Cnull
D30
💡 Hint
Check the 'Value Found' column at Step 1 in the execution_table.
At which step does the condition become true?
AStep 1
BStep 2
CStep 3
DCondition never becomes true
💡 Hint
Look at the 'Condition Result' and 'Branch Taken' columns in the execution_table.
If person.Age was 25 instead of 30, what would happen?
AThe condition would be false
BThe program would crash
CThe condition would be true
DThe output would be 'Match found'
💡 Hint
Refer to key_moments about property mismatch and exit_note.
Concept Snapshot
Property patterns check if an object's properties match given values.
Syntax: obj is { Prop1: val1, Prop2: val2 }
All specified properties must match for true.
Used in if, switch, or expressions.
Simplifies checking multiple properties at once.
Full Transcript
This example shows how property patterns work in C#. We start with an object 'person' having properties Name and Age. The pattern checks if person.Name equals "Alice" and person.Age equals 30. Each property is checked step-by-step. If all match, the condition is true and the program prints 'Match found'. If any property does not match, the condition is false and the else branch runs. This helps write clear code that checks multiple properties easily.

Practice

(1/5)
1. What is the main purpose of using property patterns in C#?
easy
A. To declare new properties in a class
B. To create new objects with default property values
C. To check multiple properties of an object in a clear and concise way
D. To override methods based on property values

Solution

  1. Step 1: Understand what property patterns do

    Property patterns allow checking the values of properties inside an object directly in conditions.
  2. Step 2: Identify the main use

    This helps write clearer and simpler code when you want to check multiple properties without nested ifs.
  3. Final Answer:

    To check multiple properties of an object in a clear and concise way -> Option C
  4. Quick Check:

    Property patterns simplify property checks = B [OK]
Hint: Property patterns simplify checking object properties [OK]
Common Mistakes:
  • Confusing property patterns with property declaration
  • Thinking property patterns create objects
  • Assuming property patterns override methods
2. Which of the following is the correct syntax to use a property pattern in a switch expression for an object person with a property Age?
easy
A. case (Age > 18):
B. case { Age: > 18 }:
C. case Age > 18:
D. case person.Age > 18:

Solution

  1. Step 1: Recall property pattern syntax

    Property patterns use curly braces with property name and condition inside, like { Age: > 18 }.
  2. Step 2: Match with options

    case { Age: > 18 }: matches this syntax exactly, others use invalid or incorrect forms.
  3. Final Answer:

    case { Age: > 18 }: -> Option B
  4. Quick Check:

    Property pattern syntax uses braces = A [OK]
Hint: Use braces with property name and condition for property patterns [OK]
Common Mistakes:
  • Using parentheses instead of braces
  • Writing property condition without braces
  • Referencing object name inside case
3. What will be the output of the following code?
record Person(string Name, int Age);

Person p = new("Alice", 25);

string result = p switch
{
    { Age: < 18 } => "Minor",
    { Age: >= 18 and < 65 } => "Adult",
    _ => "Senior"
};

Console.WriteLine(result);
medium
A. Adult
B. Minor
C. Senior
D. Compilation error

Solution

  1. Step 1: Check the Age property of the Person object

    The person has Age = 25.
  2. Step 2: Match Age with switch cases

    25 is not less than 18, so first case fails. 25 is >= 18 and < 65, so second case matches and returns "Adult".
  3. Final Answer:

    Adult -> Option A
  4. Quick Check:

    Age 25 fits adult range = A [OK]
Hint: Match property values carefully in switch cases [OK]
Common Mistakes:
  • Confusing range conditions
  • Assuming default case runs first
  • Ignoring property pattern syntax
4. Identify the error in the following code using property patterns:
record Product(string Name, decimal Price);

Product p = new("Book", 15.99m);

if (p is { Price > 10 })
{
    Console.WriteLine("Expensive");
}
medium
A. The if statement requires parentheses around the pattern
B. The decimal literal should not have 'm' suffix
C. The record declaration is missing a semicolon
D. The property pattern syntax is incorrect; it should be { Price: > 10 }

Solution

  1. Step 1: Check property pattern syntax

    Property patterns require a colon between property name and condition, like { Price: > 10 }.
  2. Step 2: Identify the error in the code

    The code uses { Price > 10 } which is invalid syntax.
  3. Final Answer:

    The property pattern syntax is incorrect; it should be { Price: > 10 } -> Option D
  4. Quick Check:

    Property patterns need colon between property and condition = D [OK]
Hint: Use colon between property and condition in patterns [OK]
Common Mistakes:
  • Omitting colon in property pattern
  • Misunderstanding decimal literal suffix
  • Adding unnecessary parentheses
5. Given a list of Person objects, how can you use property patterns in a switch expression to classify each person as "Child" if Age < 13, "Teen" if Age between 13 and 19, "Adult" if Age between 20 and 64, and "Senior" otherwise? Which code snippet correctly implements this?
hard
A. persons.Select(p => p switch { { Age: < 13 } => "Child", { Age: >= 13 and <= 19 } => "Teen", { Age: >= 20 and <= 64 } => "Adult", _ => "Senior" })
B. persons.Select(p => p switch { Age < 13 => "Child", Age >= 13 and Age <= 19 => "Teen", Age >= 20 and Age <= 64 => "Adult", _ => "Senior" })
C. persons.Select(p => p switch { { Age < 13 } => "Child", { Age >= 13 and Age <= 19 } => "Teen", { Age >= 20 and Age <= 64 } => "Adult", _ => "Senior" })
D. persons.Select(p => p switch { { Age: < 13 } => "Child", { Age: > 13 and < 20 } => "Teen", { Age: >= 20 and < 65 } => "Adult", _ => "Senior" })

Solution

  1. Step 1: Understand correct property pattern syntax with ranges

    Property patterns use colon and conditions like { Age: < 13 } and combine with and for ranges.
  2. Step 2: Check each option for correct syntax and ranges

    persons.Select(p => p switch { { Age: < 13 } => "Child", { Age: >= 13 and <= 19 } => "Teen", { Age: >= 20 and <= 64 } => "Adult", _ => "Senior" }) uses correct syntax and inclusive ranges matching the problem. persons.Select(p => p switch { Age < 13 => "Child", Age >= 13 and Age <= 19 => "Teen", Age >= 20 and Age <= 64 => "Adult", _ => "Senior" }) lacks braces and colons. persons.Select(p => p switch { { Age < 13 } => "Child", { Age >= 13 and Age <= 19 } => "Teen", { Age >= 20 and Age <= 64 } => "Adult", _ => "Senior" }) misplaces comparison operators inside braces. persons.Select(p => p switch { { Age: < 13 } => "Child", { Age: > 13 and < 20 } => "Teen", { Age: >= 20 and < 65 } => "Adult", _ => "Senior" }) uses exclusive Teen range (should include 13 and 19).
  3. Final Answer:

    persons.Select(p => p switch { { Age: < 13 } => "Child", { Age: >= 13 and <= 19 } => "Teen", { Age: >= 20 and <= 64 } => "Adult", _ => "Senior" }) -> Option A
  4. Quick Check:

    Correct property pattern syntax with proper ranges = C [OK]
Hint: Use braces and colon with 'and' for combined property conditions [OK]
Common Mistakes:
  • Omitting braces or colon in property patterns
  • Using incorrect range operators or missing boundaries
  • Mixing syntax from other languages
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