Phase 4 of 30 · Topic 4.2

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.