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

C#에서 튜플(Tuple)을 언제, 어떻게 사용해야 할까?

C#에서 튜플(Tuple)은 하나의 메서드에서 여러 개의 값을 반환해야 할 때 refout 매개변수를 사용하지 않고도 손쉽게 처리할 수 있도록 해주는 유용한 자료 구조입니다.

또한 튜플을 활용하면 여러 값을 하나의 매개변수로 묶어서 메서드에 전달할 수 있으며, 튜플 안에 튜플을 중첩(nesting)하는 것도 가능합니다.

튜플의 주요 사용 사례

  • 여러 값 반환: 별도의 클래스나 구조체를 정의하지 않고도 메서드에서 여러 값을 한 번에 반환할 수 있습니다.
  • 매개변수 전달: 관련된 여러 값을 하나의 매개변수로 묶어 메서드에 깔끔하게 전달할 수 있습니다.
  • 중첩 구조: 튜플 안에 또 다른 튜플을 포함시켜 복잡한 데이터를 표현할 수 있습니다.

예제 1: 튜플을 매개변수로 전달하기

아래 예제는 튜플을 생성하여 메서드의 인자로 전달하고, 각 요소(Item1, Item2, Item3)에 접근해 출력하는 방법을 보여줍니다.

class Program{
    static void DisplayTupleValues(Tuple<int, string, string> dummy){
        Console.WriteLine($"Id = { dummy.Item1}");
        Console.WriteLine($"Value1 = { dummy.Item2}");
        Console.WriteLine($"Value2 = { dummy.Item3}");
    }
    static void Main(){
        var dummy = Tuple.Create(1, "Dummy", "Tuple");
        DisplayTupleValues(dummy);
        Console.ReadLine();
    }
}

실행 결과

Id = 1
Value1 = Dummy
Value2 = Tuple

예제 2: 튜플을 반환 타입으로 사용하기

메서드의 반환 타입으로 튜플을 지정하면, 여러 값을 동시에 반환할 수 있습니다. 호출 측에서는 반환된 튜플의 각 항목에 접근하여 값을 사용하면 됩니다.

class Program{
    static Tuple<int, string, string> ReturnTuple(){
        return Tuple.Create(1, "Value1", "Value2");
    }
    static void Main(){
        var returnValues = ReturnTuple();
        System.Console.WriteLine($"{returnValues.Item1} {returnValues.Item2} {returnValues.Item3}");
        Console.ReadLine();
    }
}

실행 결과

1 Value1 Value2

정리

튜플은 간단한 데이터 그룹을 임시로 다룰 때 특히 유용합니다. 다만 C# 7.0 이상에서는 (int, string) 형태의 값 튜플(ValueTuple)과 명명된 요소(named elements)를 지원하므로, 최신 코드에서는 더욱 직관적인 문법을 활용하는 것이 좋습니다.