📖 Scenario: You are working with a list of daily temperatures recorded over a week. You want to check if the list matches certain patterns to quickly understand the weather trend.
🎯 Goal: Build a C# program that uses list patterns to check if the temperature list starts with a cold day, ends with a hot day, or has a specific pattern in the middle.
📋 What You'll Learn
Create a list of integers called temperatures with exact values
Create a variable called patternToCheck to hold a pattern description
Use list patterns in a switch expression to match temperatures
Print the result of the pattern matching
💡 Why This Matters
🌍 Real World
Checking patterns in lists is useful in many real-world tasks like analyzing sensor data, processing user inputs, or validating sequences.
💼 Career
Understanding list patterns helps in writing clean, readable code for data processing, which is valuable in software development and data analysis jobs.
Progress0 / 4 steps
1
Create the temperature list
Create a list of integers called temperatures with these exact values: 12, 15, 20, 25, 30, 35, 40.
C Sharp (C#)
Hint
Use List<int> and initialize it with the exact numbers inside curly braces.
2
Add a pattern description variable
Create a string variable called patternToCheck and set it to an empty string "".
C Sharp (C#)
Hint
Declare a string variable and assign it an empty string.
3
Use list patterns to check the temperatures
Use a switch expression on temperatures to set patternToCheck to: - "Starts cold" if the first temperature is less than 15, - "Ends hot" if the last temperature is greater than 35, - "Warm middle" if the middle three temperatures are between 20 and 30 inclusive, - Otherwise, set it to "No pattern". Use list patterns with temperatures in the switch expression.
C Sharp (C#)
Hint
Use list patterns with switch and when guards to check the first and last elements, and a pattern for the middle three.
4
Print the pattern result
Write a Console.WriteLine statement to print the value of patternToCheck.
C Sharp (C#)
Hint
Use Console.WriteLine(patternToCheck); to show the result.
Practice
(1/5)
1. What does the list pattern [] match in C#?
easy
A. An empty list with no elements
B. A list with exactly one element
C. A list with two or more elements
D. Any list regardless of elements
Solution
Step 1: Understand the empty list pattern
The pattern [] is used to match lists that have no elements at all.
Step 2: Compare with other list patterns
Patterns like [var x] match one element, and [var x, .. var rest] match lists with multiple elements, so they don't match empty lists.
Final Answer:
An empty list with no elements -> Option A
Quick Check:
Empty list = [] pattern [OK]
Hint: Empty list pattern is just empty brackets [] [OK]
Common Mistakes:
Confusing [] with single element pattern
Thinking [] matches any list
Assuming [] matches lists with elements
2. Which of the following is the correct syntax to match a list with exactly one element using list patterns in C#?
easy
A. [var x, .. var rest]
B. [var x]
C. [.. var rest]
D. []
Solution
Step 1: Identify the pattern for one element
The pattern [var x] matches a list with exactly one element, binding it to x.
Step 2: Understand other patterns
[var x, .. var rest] matches lists with at least one element plus the rest, [.. var rest] matches any list, and [] matches empty lists.
Final Answer:
[var x] -> Option B
Quick Check:
One element list = [var x] [OK]
Hint: One element list uses [var x] syntax [OK]
Common Mistakes:
Using [var x, .. var rest] for single element
Using [] for single element list
Confusing .. var rest with single element
3. What is the output of this C# code snippet using list patterns?
var list = new List<int> { 5, 10, 15 };
switch (list)
{
case []:
Console.WriteLine("Empty");
break;
case [var x]:
Console.WriteLine($"One element: {x}");
break;
case [var x, .. var rest]:
Console.WriteLine($"First: {x}, Rest count: {rest.Count}");
break;
}
medium
A. Empty
B. One element: 5
C. No match
D. First: 5, Rest count: 2
Solution
Step 1: Analyze the list contents
The list has three elements: 5, 10, and 15.
Step 2: Match the list pattern cases
The first case matches empty list, which is false. The second case matches exactly one element, which is false. The third case matches a list with at least one element: [var x, .. var rest]. Here, x is 5, and rest contains 10 and 15, so count is 2.
Final Answer:
First: 5, Rest count: 2 -> Option D
Quick Check:
List with 3 elements matches [x, ..rest] pattern [OK]
Hint: More than one element matches [x, ..rest] pattern [OK]
Common Mistakes:
Choosing empty or one element case incorrectly
Miscounting rest elements
Ignoring pattern order in switch
4. Identify the error in this C# code using list patterns:
var numbers = new List<int> { 1, 2, 3 };
if (numbers is [var first, var second])
{
Console.WriteLine($"First: {first}, Second: {second}");
}
medium
A. The variable names first and second are invalid
B. List patterns cannot be used with List<int>
C. The pattern [var first, var second] requires exactly two elements, but list has three
D. Missing else block after if
Solution
Step 1: Understand the pattern [var first, var second]
This pattern matches lists with exactly two elements, binding them to first and second.
Step 2: Check the list size
The list has three elements: 1, 2, and 3, so it does not match the pattern requiring exactly two elements.
Final Answer:
The pattern [var first, var second] requires exactly two elements, but list has three -> Option C
Quick Check:
Pattern length must match list length exactly [OK]
Hint: Pattern length must match list length exactly [OK]
Common Mistakes:
Assuming pattern matches partial list
Thinking variable names cause error
Ignoring list size in pattern matching
5. Given a list of integers, how can you use list patterns in C# to check if the list starts with 1 and has at least two elements? Choose the correct pattern.
hard
A. [1, var second, .. var rest]
B. [var first, 1, .. var rest]
C. [1, .. var rest]
D. [.. var rest, 1]
Solution
Step 1: Understand the requirement
The list must start with 1, then have a second element, and then zero or more elements after that (at least two elements total).
Step 2: Analyze each pattern
[1, var second, .. var rest]: [1, var second, .. var rest] matches a list starting with 1, then a second element, then the rest (zero or more). This fits the requirement. [var first, 1, .. var rest]: [var first, 1, .. var rest] matches lists where the second element is 1, not the first. [1, .. var rest]: [1, .. var rest] matches lists starting with 1 but allows zero or more elements after, so it matches lists with only one element too. [.. var rest, 1]: [.. var rest, 1] matches lists ending with 1, not starting.
Final Answer:
[1, var second, .. var rest] -> Option A
Quick Check:
Start with 1 and at least two elements = [1, var second, .. rest] [OK]
Hint: Start with 1 and two elements uses [1, var second, .. rest] [OK]
Common Mistakes:
Confusing element positions in pattern
Using patterns that allow only one element
Matching end of list instead of start
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.