Skip to content

Pattern match Span on string constants C# 11.0performancereadability

Use pattern matching to compare a Span of characters against a string literal.

When working with Span<char> or ReadOnlySpan<char> for zero-allocation string processing, comparing against known string values required calling MemoryExtensions.SequenceEqual or similar methods.

C# 11 allows you to use is and switch to pattern match a Span<char> or ReadOnlySpan<char> directly against a string constant.

Code

C#
static int ParseCommand(ReadOnlySpan<char> command) => command switch
{
    "start" => 1,
    "stop" => 2,
    "reset" => 3,
    _ => -1
};
C#
static int ParseCommand(ReadOnlySpan<char> command)
{
    if (command.SequenceEqual("start")) return 1;
    if (command.SequenceEqual("stop")) return 2;
    if (command.SequenceEqual("reset")) return 3;
    return -1;
}

More information