이러한 방식은 반환되는 튜플의 요소 타입과 이를 취하는 튜플의 타입이 달라서 튜플 요소에 암시적 변환이 활용될 때 특히 유용하다. 그림 12-2를 보라.
▲ 그림 12-2 암시적 변환이 사용된 분해
모든 변수에 암시적 타이핑을 해도 좋다면 C# 7의 기능을 이용하여 이를 매우 간단히 나타낼 수 있다.
var (a, b, name) = MethodReturningTuple();
이 코드는 매개변수 각각에 대해 var를 선언한 것과 동일하다. 그리고 할당하려는 값을 기반으로 타입을 추론하고 이 타입을 이용하여 명시적으로 타입을 지정하는 것과도 같다. 일반적인 암시적 타입 선언과 마찬가지로, var를 사용한다고 해서 동적 타입을 사용하는 것은 아니다. 그저 컴파일러가 타입을 추론할 뿐이다.
이처럼 튜플을 나타내는 괄호 내에서는 명시적 타이핑과 암시적 타이핑을 마구 섞어서 사용할 수 있지만, 변수 목록 앞에 var를 사용한 경우에는 괄호 내에서 명시적으로 타입을 지정할 수 없다.
var (a, long b, name) = MethodReturningTuple(); ----- 유효하지 않음(튜플 ‘내부와 외부에서’ 동시에 선언할 수 없음)