A property pattern lets you check if an object has certain properties with specific values or conditions, making it easier to match complex data shapes in a clear way.
Click to reveal answer
beginner
How do you write a simple property pattern to check if a Point object has X equal to 0?
You write: point is { X: 0 }. This means the object 'point' has a property 'X' with value 0.
Click to reveal answer
intermediate
Can property patterns check nested properties? Give an example.
Yes. For example: person is { Address: { City: "Paris" } } checks if 'person' has an 'Address' property whose 'City' is "Paris".
Click to reveal answer
intermediate
What happens if a property in a property pattern is null or missing?
The pattern does not match. Property patterns require the property to exist and meet the condition; otherwise, the match fails.
Click to reveal answer
intermediate
How can you combine multiple property patterns in one check?
You can list multiple properties inside braces, like obj is { Prop1: 5, Prop2: "hello" }, which means both conditions must be true.
Click to reveal answer
What does the pattern obj is { Name: "Alice" } check?
AIf obj has any property named Name
BIf obj is a string "Alice"
CIf obj is null
DIf obj has a property Name equal to "Alice"
✗ Incorrect
The pattern checks if the object has a property called Name with the value "Alice".
Can property patterns be used to check nested properties?
AOnly for properties of type int
BNo, only top-level properties
CYes, by nesting braces for each property level
DOnly if the object is a struct
✗ Incorrect
Property patterns support nested properties by using nested braces, like { Address: { City: "Paris" } }.
What happens if a property in the pattern is missing on the object?
AThe pattern does not match
BThe pattern matches anyway
CThe pattern throws an exception
DThe property is ignored
✗ Incorrect
If the property is missing, the pattern does not match because the condition cannot be verified.
How do you check multiple properties in one property pattern?
AList properties separated by commas inside braces
BUse multiple 'is' keywords
CUse && operator between patterns
DUse a switch statement
✗ Incorrect
You list multiple properties inside one set of braces separated by commas, like { Prop1: 1, Prop2: 2 }.
Which C# version introduced property patterns?
AC# 6
BC# 9
CC# 8
DC# 7
✗ Incorrect
Property patterns were introduced in C# 9 to improve pattern matching capabilities.
Explain what a property pattern is and how it helps in checking object properties.
Think about how you check if an object has certain values inside it.
You got /3 concepts.
Describe how to write a property pattern that checks multiple properties and nested properties.
Imagine checking a person's address city inside the person object.
You got /3 concepts.
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
Step 1: Understand what property patterns do
Property patterns allow checking the values of properties inside an object directly in conditions.
Step 2: Identify the main use
This helps write clearer and simpler code when you want to check multiple properties without nested ifs.
Final Answer:
To check multiple properties of an object in a clear and concise way -> Option C
Quick Check:
Property patterns simplify property checks = B [OK]
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
Step 1: Recall property pattern syntax
Property patterns use curly braces with property name and condition inside, like { Age: > 18 }.
Step 2: Match with options
case { Age: > 18 }: matches this syntax exactly, others use invalid or incorrect forms.
Final Answer:
case { Age: > 18 }: -> Option B
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
Step 1: Check the Age property of the Person object
The person has Age = 25.
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".
Final Answer:
Adult -> Option A
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
Step 1: Check property pattern syntax
Property patterns require a colon between property name and condition, like { Price: > 10 }.
Step 2: Identify the error in the code
The code uses { Price > 10 } which is invalid syntax.
Final Answer:
The property pattern syntax is incorrect; it should be { Price: > 10 } -> Option D
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
Step 1: Understand correct property pattern syntax with ranges
Property patterns use colon and conditions like { Age: < 13 } and combine with and for ranges.
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).
Final Answer:
persons.Select(p => p switch { { Age: < 13 } => "Child", { Age: >= 13 and <= 19 } => "Teen", { Age: >= 20 and <= 64 } => "Adult", _ => "Senior" }) -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.