C#의 Tuple<T1, T2, T3> 클래스는 세 개의 요소를 가지는 3-튜플(3-tuple), 즉 '트리플(triple)'을 나타냅니다. 튜플(tuple)은 여러 요소를 순서대로 담을 수 있는 데이터 구조로, 서로 다른 자료형의 값을 하나의 단위로 묶어 관리할 수 있다는 점이 큰 장점입니다.
튜플의 주요 활용 사례
- 데이터 집합에 더 쉽게 접근
- 데이터 집합을 손쉽게 조작
- 하나의 데이터 세트를 표현
- 메서드에서 여러 값을 반환
- 메서드에 여러 값을 전달
예제 1: int와 string으로 구성된 3-튜플
다음은 C#에서 3-튜플을 생성하고 활용하는 예제입니다.
using System;
public class Demo {
public static void Main(string[] args) {
Tuple<int,string,string> tuple = new Tuple<int,string,string>(35, "steve", "katie");
Console.WriteLine("Value (Item1)= " + tuple.Item1);
Console.WriteLine("Value (Item2)= " + tuple.Item2);
Console.WriteLine("Value (Item3)= " + tuple.Item3);
if (tuple.Item1 == 35) {
Console.WriteLine("Exists: Tuple Value = " +tuple.Item1);
}
if (tuple.Item2 == "jack") {
Console.WriteLine("Exists: Tuple Value = " +tuple.Item2);
}
if (tuple.Item3 == "katie") {
Console.WriteLine("Exists: Tuple Value = " +tuple.Item3);
}
}
}실행 결과
Value (Item1)= 35 Value (Item2)= steve Value (Item3)= katie Exists: Tuple Value = 35 Exists: Tuple Value = katie
위 코드에서 튜플의 각 요소는 Item1, Item2, Item3 속성을 통해 접근할 수 있습니다. 조건문을 사용해 특정 값이 존재하는지 확인한 결과, Item1의 값 35와 Item3의 값 "katie"가 일치하여 해당 메시지가 출력되었습니다.
예제 2: 문자열 3개로 구성된 3-튜플
이번에는 세 개의 문자열로 이루어진 3-튜플을 만들어 보겠습니다.
using System;
public class Demo {
public static void Main(string[] args) {
Tuple<string,string,string> tuple = new Tuple<string,string,string>("nathan", "steve", "katie");
Console.WriteLine("Value (Item1)= " + tuple.Item1);
Console.WriteLine("Value (Item2)= " + tuple.Item2);
Console.WriteLine("Value (Item3)= " + tuple.Item3);
if (tuple.Item1 == "nathan") {
Console.WriteLine("Exists: Tuple Value = " +tuple.Item1);
}
if (tuple.Item2 == "jack") {
Console.WriteLine("Exists: Tuple Value = " +tuple.Item2);
}
if (tuple.Item3 == "katie") {
Console.WriteLine("Exists: Tuple Value = " +tuple.Item3);
}
}
}실행 결과
Value (Item1)= nathan Value (Item2)= steve Value (Item3)= katie Exists: Tuple Value = nathan Exists: Tuple Value = katie
정리
C#에서 3-튜플은 Tuple<T1, T2, T3> 클래스를 통해 간단하게 생성할 수 있으며, 각 요소는 Item1, Item2, Item3 속성으로 접근합니다. 참고로 .NET 4.7 이상에서는 ("a", "b", "c") 형태의 값 튜플(ValueTuple) 문법도 지원되므로, 상황에 따라 더 간결한 문법을 활용하는 것도 좋습니다.