C# 2-튜플(Tuple<T1, T2>)이란?
C#의 Tuple<T1, T2> 클래스는 두 개의 요소를 가지는 2-튜플(two-tuple), 즉 흔히 쌍(pair)이라고 부르는 자료구조를 나타냅니다. 튜플(tuple)은 여러 개의 요소를 하나의 시퀀스로 묶어 저장하는 데이터 구조로, 서로 관련된 값들을 하나의 단위로 다룰 때 매우 유용합니다.
2-튜플의 각 요소는 읽기 전용 속성인 Item1과 Item2를 통해 접근할 수 있으며, 두 요소는 서로 다른 타입이어도 됩니다.
예제 1: 문자열 쌍 튜플 만들기
다음은 두 개의 문자열로 2-튜플을 생성하고 조건에 따라 값을 확인하는 예제입니다.
using System;
public class Demo {
public static void Main(string[] args) {
Tuple<string, string> tuple = new Tuple<string, string>("jack", "steve");
Console.WriteLine("Value = " + tuple.Item1);
if (tuple.Item1 == "jack") {
Console.WriteLine("Exists: Tuple Value = " + tuple.Item1);
}
if (tuple.Item2 == "david") {
Console.WriteLine("Exists: Tuple Value = " + tuple.Item2);
}
}
}
실행 결과
Value = jack
Exists: Tuple Value = jack
Item2의 값이 "david"가 아니므로 두 번째 조건문은 실행되지 않습니다.
예제 2: 서로 다른 타입의 쌍 튜플 만들기
2-튜플은 숫자와 문자열처럼 서로 다른 타입의 값도 함께 저장할 수 있습니다.
using System;
public class Demo {
public static void Main(string[] args) {
Tuple<int, string> tuple = new Tuple<int, string>(20, "steve");
Console.WriteLine("Value = " + tuple.Item1);
if (tuple.Item1 == 20) {
Console.WriteLine("Exists: Tuple Value = " + tuple.Item1);
}
if (tuple.Item2 == "david") {
Console.WriteLine("Exists: Tuple Value = " + tuple.Item2);
}
}
}
실행 결과
Value = 20
Exists: Tuple Value = 20
정리 및 참고 사항
- Tuple<T1, T2>는 불변(immutable) 객체이므로 생성 후에는 요소 값을 변경할 수 없습니다.
- 각 요소는
Item1,Item2속성으로 접근합니다. - C# 7.0 이상에서는 ValueTuple 문법(예:
(int, string) pair = (20, "steve");)을 사용하면 더 간결하고 성능이 좋은 튜플을 만들 수 있습니다.