Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 4.0 튜플(Tuple)이란? 개념부터 활용법까지 총정리

C# 4.0 튜플(Tuple)이란?

튜플(Tuple)은 서로 다른 데이터 타입의 요소들을 하나로 묶어 저장하는 순차적 자료 구조입니다. C# 4.0에서 처음 도입되었으며, 메서드에서 여러 값을 한 번에 반환하거나 서로 연관된 데이터를 임시로 그룹화해 전달할 때 매우 유용합니다.

튜플의 가장 큰 장점은 각 요소의 타입을 일일이 새로운 클래스나 구조체로 정의하지 않고도 Tuple<T> 인스턴스를 바로 만들 수 있다는 점입니다.

튜플의 주요 특징

  • 서로 다른 타입 조합: int, string 등 다양한 타입을 하나의 튜플에 담을 수 있습니다.
  • 최대 8개 요소 지원: 8개 이상이 필요하면 마지막 요소(Rest)에 중첩 튜플을 넣어 확장할 수 있습니다.
  • 불변(Immutable) 구조: 한번 생성된 튜플의 요소 값은 변경할 수 없습니다.
  • Item 속성 접근: 각 요소는 Item1, Item2 … 형태의 읽기 전용 속성으로 접근합니다.

두 개의 요소를 가진 튜플 선언하기

가장 많이 사용되는 형태인 두 개의 요소를 가진 튜플을 만들어 보겠습니다. 선언 방법은 다음과 같습니다.

Tuple<int, string> person = new Tuple<int, string>(32, "Steve");

위 코드는 정수 32와 문자열 "Steve"를 각각 첫 번째, 두 번째 요소로 갖는 튜플을 생성합니다.

튜플 요소에 접근하는 방법

튜플의 각 요소는 Item1, Item2 속성을 통해 읽을 수 있습니다.

먼저 첫 번째 요소(정수형)를 확인하는 코드입니다.

if (tuple.Item1 == 99) {
    Console.WriteLine(tuple.Item1);
}

다음은 두 번째 요소(문자열)를 확인하는 코드입니다.

if (tuple.Item2 == "Steve") {
    Console.WriteLine(tuple.Item2);
}

전체 예제

정수와 문자열을 함께 담은 튜플을 생성하고, 각 요소를 조건에 맞게 출력하는 전체 코드입니다.

using System;

namespace Demo {
    class Program {

        static void Main(string[] args) {

            Tuple<int, string> tuple = new Tuple<int, string>(50, "Tom");

            if (tuple.Item1 == 50) {
                Console.WriteLine(tuple.Item1);
            }

            if (tuple.Item2 == "Tom") {
                Console.WriteLine(tuple.Item2);
            }
        }
    }
}

실행 결과

50
Tom

조건이 참이 된 Item1Item2의 값이 차례로 화면에 출력됩니다.

참고: Tuple.Create로 더 간결하게 작성하기

Tuple.Create 정적 메서드를 사용하면 제네릭 타입 인자를 명시하지 않아도 컴파일러가 타입을 자동으로 추론하므로 코드를 더 간결하게 만들 수 있습니다.

var person = Tuple.Create(32, "Steve");

이처럼 C# 4.0의 튜플은 별도의 타입 정의 없이 여러 값을 손쉽게 묶어 다룰 수 있는 실용적인 기능입니다. 다만 요소 이름이 Item1, Item2처럼 고정되어 있어 의미 전달이 약한 편이므로, C# 7.0 이상에서는 값 튜플(ValueTuple)과 명명된 요소를 함께 고려해 보는 것도 좋습니다.