할당에 대해 좀 더 기술적으로 깊이 있게 살펴보자면, 패턴 변수를 생성하는 패턴 문을 포함하는 is 표현식 이후에는 패턴 변수가 (언어 명세를 기술하는 용어를 사용해서 이야기하자면) ‘실질적인 표현식을 통해 명백히 할당된’ 변수가 된다. 이는 if 조건을 이용해서 타입을 확인하는 일, 그 이상의 작업을 수행할 때 매우 중요하다. 예를 들어 변수의 값이 특정 수보다 큰 값인지 확인하려 한다고 해보자.
if (input is int x && x > 100)
{
Console.WriteLine($"Input was a large integer: {x}");
}
이 예제의 if 문을 살펴보면 &&를 기준으로 좌측 피연산자가 true로 평가될 때만 우측 피연자를 평가하므로 && 우측에서는 x를 사용할 수 있다. 하지만 input 값을 int 타입 또는 long 타입으로 다루어야 한다면 어떨까? 아마도 다음과 같이 코드를 작성할 수 있을 텐데, 이 경우 값을 테스트하는 것은 가능하지만 둘 중 어떤 조건이 매칭되었다고 말할 수 없다.
if ((input is int x && x > 100) || (input is long y && y > 100))
{
Console.WriteLine($"Input was a large integer of some kind");
}