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

C# Tuple 클래스 완벽 정리: 7-튜플 사용법

C#의 Tuple<T1,T2,T3,T4,T5,T6,T7> 클래스는 7개의 요소를 가지는 7-튜플(septet)을 나타냅니다. 튜플(Tuple)이란 여러 요소가 순서대로 나열된 시퀀스 형태의 데이터 구조로, 서로 다른 타입의 값을 하나의 단위로 묶어 관리할 수 있게 해줍니다.

튜플의 주요 용도

  • 데이터 집합에 더욱 쉽게 접근할 수 있습니다.
  • 데이터 집합을 간편하게 조작할 수 있습니다.
  • 하나의 데이터 세트를 단일 객체로 표현할 수 있습니다.
  • 메서드에서 여러 값을 한 번에 반환할 수 있습니다.
  • 메서드에 여러 값을 한꺼번에 전달할 수 있습니다.

Tuple<T1,T2,T3,T4,T5,T6,T7> 클래스의 속성

이 클래스는 7개의 읽기 전용 속성을 제공합니다.

  • Item1 — 현재 Tuple 객체의 첫 번째 요소 값을 가져옵니다.
  • Item2 — 현재 Tuple 객체의 두 번째 요소 값을 가져옵니다.
  • Item3 — 현재 Tuple 객체의 세 번째 요소 값을 가져옵니다.
  • Item4 — 현재 Tuple 객체의 네 번째 요소 값을 가져옵니다.
  • Item5 — 현재 Tuple 객체의 다섯 번째 요소 값을 가져옵니다.
  • Item6 — 현재 Tuple 객체의 여섯 번째 요소 값을 가져옵니다.
  • Item7 — 현재 Tuple 객체의 일곱 번째 요소 값을 가져옵니다.

그럼 C#에서 7-튜플을 구현하는 예제를 살펴보겠습니다.

예제 1: 7-튜플 생성 및 요소 접근

using System;
public class Demo {
    public static void Main(string[] args) {
        Tuple<int,int,int,int,int,int,int> tuple = new Tuple<int,int,int,int,int,int,int>(100, 150, 200, 300, 600, 1000, 2000);
        Console.WriteLine("Value (Item1)= " + tuple.Item1);
        Console.WriteLine("Value (Item2)= " + tuple.Item2);
        Console.WriteLine("Value (Item3)= " + tuple.Item3);
        Console.WriteLine("Value (Item4)= " + tuple.Item4);
        Console.WriteLine("Value (Item5)= " + tuple.Item5);
        Console.WriteLine("Value (Item6)= " + tuple.Item6);
        Console.WriteLine("Value (Item7)= " + tuple.Item7);
        if (tuple.Item5 == 600) {
            Console.WriteLine("Exists: Tuple Item 5 = " +tuple.Item5);
        }
        if (tuple.Item6 == 900) {
            Console.WriteLine("Exists: Tuple Item 6 = " +tuple.Item6);
        }
        if (tuple.Item7 == 2000) {
            Console.WriteLine("Exists: Tuple Item 7 = " +tuple.Item7);
        }
    }
}

실행 결과

Value (Item1)= 100
Value (Item2)= 150
Value (Item3)= 200
Value (Item4)= 300
Value (Item5)= 600
Value (Item6)= 1000
Value (Item7)= 2000
Exists: Tuple Item 5 = 600
Exists: Tuple Item 7 = 2000

위 예제에서는 7개의 int 값을 가진 튜플을 생성한 뒤, 각 속성(Item1~Item7)으로 요소에 접근하여 출력했습니다. 또한 조건문을 통해 특정 위치의 값이 기대값과 일치하는지 확인할 수 있습니다. Item6이 900인 경우의 조건은 값이 일치하지 않아 출력되지 않은 점에 유의하세요.

이어서 두 번째 예제를 살펴보겠습니다.

예제 2: 튜플 요소 값 비교

using System;
public class Demo {
    public static void Main(string[] args) {
        Tuple<int,int,int,int,int,int,int> tuple = new Tuple<int,int,int,int,int,int,int>(100, 150, 200, 300, 600, 1000, 1000);
        Console.WriteLine("Value (Item1)= " + tuple.Item1);
        Console.WriteLine("Value (Item2)= " + tuple.Item2);
        Console.WriteLine("Value (Item3)= " + tuple.Item3);
        Console.WriteLine("Value (Item4)= " + tuple.Item4);
        Console.WriteLine("Value (Item5)= " + tuple.Item5);
        Console.WriteLine("Value (Item6)= " + tuple.Item6);
        Console.WriteLine("Value (Item7)= " + tuple.Item7);
        if (tuple.Item5 == 600) {
            Console.WriteLine("Exists: Tuple Item 5 = " +tuple.Item5);
        }
        if (tuple.Item6 == 900) {
            Console.WriteLine("Exists: Tuple Item 6 = " +tuple.Item6);
        }
        if (tuple.Item7 == 2000) {
            Console.WriteLine("Exists: Tuple Item 7 = " +tuple.Item7);
        }
        if (tuple.Item7 == tuple.Item6){
            Console.WriteLine("Tuple Items Matched!");
        }
    }
}

실행 결과

Value (Item1)= 100
Value (Item2)= 150
Value (Item3)= 200
Value (Item4)= 300
Value (Item5)= 600
Value (Item6)= 1000
Value (Item7)= 1000
Exists: Tuple Item 5 = 600
Tuple Items Matched!

두 번째 예제에서는 Item6과 Item7에 같은 값(1000)을 넣고 두 요소를 비교했습니다. 조건문에서 두 값이 일치하므로 "Tuple Items Matched!" 메시지가 출력되는 것을 확인할 수 있습니다.

정리

C#의 Tuple<T1,T2,T3,T4,T5,T6,T7> 클래스는 최대 7개의 요소를 하나의 불변(immutable) 객체로 묶어주는 편리한 데이터 구조입니다. 메서드에서 여러 값을 반환하거나 전달해야 할 때 별도의 클래스나 구조체를 정의하지 않고도 간결하게 처리할 수 있다는 장점이 있습니다. 참고로 8개 이상의 요소가 필요하다면 마지막 요소에 중첩 튜플(nested tuple)을 담는 TRest 매개변수를 활용할 수 있습니다.