Home Full Site
C# 11: Span/ReadOnlySpan 패턴 매칭

지금까지 문자열(string)에 대한 패턴 매칭은 널리 사용되어 왔었는데, Span<char>과 ReadOnlySpan<char> 타입에 대해서는 패턴 매칭이 지원되지 않았었다. Span<char>과 ReadOnlySpan<char>은 문자열보다 성능(performance)이 더 좋기 때문에, .NET에서 string 대신 Span/ReadOnlySpan 을 사용하도록 많은 API들이 추가되고 있다.

이러한 맥락에서 Span<char>과 ReadOnlySpan<char>를 보다 널리 사용되도록 하기 위해, C# 11에서는 Span<char>과 ReadOnlySpan<char> 타입을 상수와 비교하는 패턴 매칭을 지원하게 되었다.

아래 예제는 ReadOnlySpan<char> 파라미터를 is 혹은 == 연산자를 사용하여 문자열 상수와 비교하거나, switch expression 패턴을 사용하여 여러 문자열 리터럴들과 비교하는 것을 예시한 것이다.


예제

bool CheckGroup(ReadOnlySpan<char> s)
{
    // is 비교
    if (s is "admin") return true;

    // == 연산자로 비교
    if (s == "supervisor") return true;

    // switch expression 패턴
    bool pass = s switch
    {
        "IT" => true,
        "HR" => true,
        _ => false
    };

    return pass;
}

// 테스트
ReadOnlySpan<char> s = "IT".AsSpan();
bool ok = CheckGroup(s);
Console.WriteLine(ok);



© csharpstudy.com