예제 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문의 순서가 이제는 문제가 될 수 있다.