더북(TheBook)

예제 12-18 단일 본문을 공유하는 여러 개의 case 레이블에서 패턴을 사용 ▶ NumericBounds.cs

static void CheckBounds(object input)
{
    switch (input)
    {
        case int x when x > 1000:
        case long y when y > 10000L:
            Console.WriteLine("Value is too large");
            break;
        case int x when x < -1000:
        case long y when y < -10000L:
            Console.WriteLine("Value is too low");
            break;
        default:
            Console.WriteLine("Value is in range");
            break;
    }
}

여러 case 문 중 하나와 패턴이 매칭되면 가드 절까지 연이어 수행될 것이므로 해당 case 문의 가드 절 내에서는 패턴 변수가 ‘명백히 할당된’ 상태가 된다. 하지만 본문 내로 진입하는 순간 ‘명백히 할당된’ 상태가 되지 못한다. 이 경우에도 패턴 변수에 새로운 값을 할당한 후 사용할 수 있겠지만 그리 유용하지는 않을 것 같다.

패턴 매칭에 대한 기본 전제가 새롭고 다르다는 것 외에도 상수를 사용하는 switch 문과 패턴을 사용하는 switch 문 사이에는 큰 차이점 하나가 존재한다. 이전에는 아무런 문제가 되지 않았던 case문의 순서가 이제는 문제가 될 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.