열띤 토론이 이루어진 주제인 만큼 범위를 이렇게 정한 것에는 고유의 장점과 단점이 있다. 예제 12-10에서 다룬 as/if 패턴에서의 단점은 타입을 확인하고 값을 확인하는 단계를 벗어나면 더 이상 사용되지 않는 쓸모없는 변수가 너무 많다는 점이다. 안타깝게도 이 점은 타입 패턴을 사용해도 개선되지 않는다. 물론 패턴이 매칭되지 않으면 실제로 변수에 할당이 이루어지지 않으므로 완전히 동일하다고 할 수는 없다.
다음 코드를 보자.
string text = input as string;
if (text != null)
{
Console.WriteLine(text);
}
이 코드에서 text 변수는 해당 범위 전체에서 유효하며, 확실히 할당이 이루어진다. 이 코드를 타입 패턴을 사용해서 작성하면 다음과 같다.
if (input is string text)
{
Console.WriteLine(text);
}