출력 결과는 다음과 같다.
No! null is not a System.Nullable`1[System.Int32]
Yes! 5 is a System.Nullable`1[System.Int32]
No! text is not a System.Nullable`1[System.Int32]
No! null is not a System.String
No! 5 is not a System.String
Yes! text is a System.String
이번 절의 내용을 마무리하기 전에 패턴 매칭과 관련하여 C# 7.1에서 비로소 해결된 C# 7의 문제점을 언급해야 할 것 같다. 이미 프로젝트가 C# 7.1 이상을 사용하도록 설정되었다면 전혀 눈치채지 못하고 넘어갔을 텐데, 혹시나 C# 7.1 이상으로 개발하다가 C# 7.0을 사용하는 프로젝트로 코드를 복사할 경우 혼동하지 않도록 관련 내용을 살펴보려고 한다.
C# 7.0에서 타입 패턴은 다음과 같다.
x is SomeType y
이렇게 코드를 쓰려면 컴파일 타임에 x를 SomeType으로 타입 변환할 수 있어야 한다. 그리고 이 코드는 제네릭을 고려하기 이전까지는 충분히 타당해 보였다. 이제 다음 코드를 살펴보자. 이 코드는 패턴 매칭을 이용하여 shape의 세부 내용을 출력하는 제네릭 메서드를 작성한 예다.