C#에서 튜플(Tuple)은 여러 개의 값을 하나의 단위로 묶어 다룰 수 있게 해주는 유용한 자료 구조입니다. 이번 글에서는 튜플 안에 또 다른 튜플을 포함시키는 중첩 튜플(Nested Tuple)을 선언하고, 그 내부 요소에 접근하는 방법을 예제 코드와 함께 살펴보겠습니다.
중첩 튜플 선언하기
먼저 Tuple.Create 메서드를 사용하여 중첩 튜플을 선언해 보겠습니다. 아래 예제에서는 7번째 위치에 새로운 튜플 (720, 750, 780)을 포함시켰습니다.
var tuple = Tuple.Create(100, 200, 300, 400, 500, 600, Tuple.Create(720, 750, 780), 800);
위 코드에서 내부 튜플은 바깥쪽 튜플의 7번째 항목(Item7)으로 저장됩니다. 참고로 C#의 Tuple 클래스는 최대 8개의 요소까지 지원하며, 8번째 요소는 Rest 속성을 통해 접근할 수 있습니다.
중첩 튜플의 요소에 접근하기
중첩된 튜플의 요소를 출력하려면 Item 속성을 연달아(중첩하여) 사용하면 됩니다. 7번째 항목이 중첩 튜플이므로, 내부 값들은 다음과 같이 가져올 수 있습니다.
tuple.Item7.Item1; tuple.Item7.Item2; tuple.Item7.Item3;
전체 예제 코드
지금까지 설명한 내용을 하나의 완성된 프로그램으로 정리하면 다음과 같습니다.
using System;
public class Program {
public static void Main() {
var tuple = Tuple.Create(100, 200, 300, 400, 500, 600, Tuple.Create(720, 750, 780), 800);
Console.WriteLine(tuple.Item1);
Console.WriteLine(tuple.Item2);
Console.WriteLine(tuple.Item3);
Console.WriteLine(tuple.Item4);
Console.WriteLine(tuple.Item5);
Console.WriteLine(tuple.Item6);
// 중첩 튜플
Console.WriteLine("\nNested Tuple...");
Console.WriteLine(tuple.Item7.Item1);
Console.WriteLine(tuple.Item7.Item2);
Console.WriteLine(tuple.Item7.Item3);
Console.WriteLine("\n8th element...\n" + tuple.Rest.Item1);
}
}실행 결과
100 200 300 400 500 600 Nested Tuple... 720 750 780 8th element... 800
정리
중첩 튜플은 Tuple.Create를 통해 손쉽게 만들 수 있으며, 내부 요소에 접근할 때는 Item7.Item1처럼 속성을 체인 형태로 연결하면 됩니다. 또한 8번째 요소에 접근할 때는 Rest.Item1을 사용한다는 점도 기억해 두면 좋습니다. 이러한 방식을 활용하면 복잡한 데이터 구조도 간결하게 표현할 수 있습니다.