12.5 is 연산자와 함께 패턴 사용
is 연산자는 일반 표현식의 한 부분으로서 어디서든 사용할 수 있다. 물론, 대부분의 경우에 if 문과 함께 사용되지만 항상 그렇게 사용해야 하는 것은 아니다. C# 7 이전에는 is 연산자의 오른쪽에 반드시 타입만 두어야 했다. 하지만 이제는 모든 패턴을 둘 수 있게 변경되었으므로 상수 패턴이나 var 패턴도 이곳에 둘 수 있다. 하지만 대부분 타입 패턴을 사용한다.
var 패턴과 타입 패턴을 사용하면 이 과정에서 새로운 패턴 변수가 생성되는데, 이를 이용하는 과정에서 C# 7.3 이전에는 필드, 속성, 생성자 초기화자, 쿼리 표현식 등을 사용할 수 없었다. 예를 들어 다음 코드는 유효하지 않았다.
static int length = GetObject() is string text ? text.Length : -1;
이러한 제약 사항이 문제가 되는 경우를 실제로 본 적은 없지만, 어쨌든 이러한 제약 사항은 C# 7.3부터 사라졌다.
이처럼 지역 변수를 생성하는 패턴을 사용하면 새롭게 생성되는 변수의 범위는 어떻게 되는지 궁금할 것이다. 이에 대해서는 C# 팀과 커뮤니티에서 상당한 토론이 이루어졌던 것으로 알고 있다. 결론을 말하자면, 이 변수를 생성한 블록 전체가 변수가 사용될 수 있는 범위다.