C#의 Tuple<T1, T2, T3, T4> 클래스는 네 개의 요소를 담는 4-튜플(4-tuple), 즉 쿼드러플(quadruple)을 나타냅니다. 튜플(tuple)은 여러 요소를 순서대로 저장하는 데이터 구조로, 서로 다른 자료형의 값들을 하나의 단위로 묶어 관리할 수 있어 매우 유용합니다.
튜플의 주요 활용 사례
- 데이터 집합에 더 쉽게 접근할 수 있습니다.
- 데이터 집합을 손쉽게 조작할 수 있습니다.
- 하나의 데이터 세트를 간결하게 표현할 수 있습니다.
- 메서드에서 여러 개의 값을 한 번에 반환할 수 있습니다.
- 메서드에 여러 개의 값을 한꺼번에 전달할 수 있습니다.
Tuple<T1, T2, T3, T4>의 속성
이 클래스는 네 개의 읽기 전용 속성을 제공합니다.
- Item1 – 현재 Tuple<T1, T2, T3, T4> 객체의 첫 번째 요소 값을 가져옵니다.
- Item2 – 현재 Tuple<T1, T2, T3, T4> 객체의 두 번째 요소 값을 가져옵니다.
- Item3 – 현재 Tuple<T1, T2, T3, T4> 객체의 세 번째 요소 값을 가져옵니다.
- Item4 – 현재 Tuple<T1, T2, T3, T4> 객체의 네 번째 요소 값을 가져옵니다.
예제 1: 문자열 4-튜플 구현
다음은 C#에서 문자열 타입의 4-튜플을 생성하고 각 요소에 접근하는 예제입니다.
using System;
public class Demo {
public static void Main(string[] args) {
Tuple<string,string,string,string> tuple = new Tuple<string,string,string,string>("nathan", "steve", "katie", "tim");
Console.WriteLine("Value (Item1)= " + tuple.Item1);
Console.WriteLine("Value (Item2)= " + tuple.Item2);
Console.WriteLine("Value (Item3)= " + tuple.Item3);
Console.WriteLine("Value (Item4)= " + tuple.Item4);
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);
}
if (tuple.Item4 == "tom") {
Console.WriteLine("Exists: Tuple Value = " +tuple.Item4);
}
}
}출력 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Value (Item1)= nathan Value (Item2)= steve Value (Item3)= katie Value (Item4)= tim Exists: Tuple Value = nathan Exists: Tuple Value = katie
출력에서 확인할 수 있듯이, 조건문은 Item1("nathan")과 Item3("katie")만 일치하므로 해당 값들만 출력됩니다.
예제 2: 정수 4-튜플 구현
이번에는 정수(int) 타입으로 4-튜플을 구현한 또 다른 예제입니다.
using System;
public class Demo {
public static void Main(string[] args) {
Tuple<int,int,int,int> tuple = new Tuple<int,int,int,int>(100, 150, 300, 450);
Console.WriteLine("Value (Item1)= " + tuple.Item1);
Console.WriteLine("Value (Item2)= " + tuple.Item2);
Console.WriteLine("Value (Item3)= " + tuple.Item3);
Console.WriteLine("Value (Item4)= " + tuple.Item4);
if (tuple.Item1 == 100) {
Console.WriteLine("Exists: Tuple Item 1 = " +tuple.Item1);
}
if (tuple.Item2 == 250) {
Console.WriteLine("Exists: Tuple Item 2 = " +tuple.Item2);
}
if (tuple.Item3 == 270) {
Console.WriteLine("Exists: Tuple Item 3 = " +tuple.Item3);
}
if (tuple.Item4 == 300) {
Console.WriteLine("Exists: Tuple Item 4 = " +tuple.Item4);
}
}
}출력 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Value (Item1)= 100 Value (Item2)= 150 Value (Item3)= 300 Value (Item4)= 450 Exists: Tuple Item 1 = 100
네 개의 조건 중 Item1 == 100만 참이므로, 일치하는 항목 하나만 출력되는 것을 확인할 수 있습니다. 이처럼 Tuple<T1, T2, T3, T4> 클래스를 활용하면 서로 연관된 네 개의 값을 하나의 객체로 깔끔하게 관리할 수 있습니다.