11.4.9 확장 메서드
System.TupleExtensions 정적 클래스는 System.ValueTuple 타입과 동일한 어셈블리 내에 포함되어 있다. 이 클래스에는 System.Tuple과 System.ValueTuple에 대한 확장 메서드가 포함되어 있으며 세 가지 종류의 메서드군으로 나눠 볼 수 있다.
• Deconstruct: Tuple 타입을 확장
• ToValueTuple: Tuple 타입을 확장
• ToTuple: ValueTuple 타입을 확장
각각의 메서드는 앞서 애리티가 8 이상인 ValueTuple을 처리하기 위한 패턴에 대응하기 위해 애리티별로 21개의 오버로드 메서드를 가지고 있다. 이 중 Deconstruct는 12장에서 좀 더 자세히 살펴볼 것이다. ToValueTuple과 ToTuple은 예상대로 동작하는데, .NET 4.0 시대에 제공되었던 불변 참조 타입 튜플과 새로운 가변 값 타입 튜플 간의 변환을 담당한다. 이러한 메서드는 주로 오래전에 개발된 코드를 Tuple 타입과 함께 사용할 때 유용하다.
지금까지 CLR 수준에서 튜플을 구현하는 방법 중 알아 둘 만하다고 판단되는 부분은 모두 살펴봤다. 다음으로 다룰 내용은 튜플을 대체할 다른 선택지에 대한 이야기다. 튜플을 사용한다는 것은 도구함에 들어 있는 여러 도구 중 하나를 꺼내어 사용하는 것에 지나지 않는다. 튜플이 모든 경우에 항상 최적의 선택지는 아니다.