List Patterns & Slice Patterns (`[first, .., last]`)
1Concept
List patterns inspect collections, arrays, and spans based on sequence elements and length. Slice patterns `..` capture or discard sub-ranges without array copying.
2Architecture Diagram
Input Array: [ 100, 200, 300, 400, 500 ] Matched Pattern: [ int header, .. var body, int footer ] ├── header = 100 ├── body = [ 200, 300, 400 ] (Zero-allocation slice) └── footer = 500
3Code Example
C# 13 & .NET 9
using System;
public class ListPatternDemo
{
public static string AnalyzePacket(int[] packet) => packet switch
{
[] => "Empty Packet",
[0xAA, 0xBB, .. var payload, 0xFF] => $"Valid Framing Protocol (Payload Size: {payload.Length})",
[0x01, ..] => "System Command Packet",
_ => "Corrupt or Unknown Frame"
};
public static void Main()
{
int[] frame = [0xAA, 0xBB, 10, 20, 30, 40, 0xFF];
Console.WriteLine($"Packet Analysis: {AnalyzePacket(frame)}");
}
}4Expected Output
Packet Analysis: Valid Framing Protocol (Payload Size: 4)
5Key Takeaways
- ✓List patterns work natively on `int[]`, `List<T>`, `Span<T>`, and any indexable collection.
- ✓Slice pattern `..` matches zero or more elements.
- ✓Discard pattern `_` matches exactly one element.