[Unity]/[C#]

[C#] Tuple(튜플) 형식

극꼼 2022. 9. 27. 18:21
반응형


<Tuple(튜플)>

: 간단한 데이터 구조로, 여러 데이터 요소를 그룹화하여 간결한 구문으로 제공합니다. 여러 값을 함께 리턴해야 할 때 유용합니다.

 

 


<Tuple(튜플) 특징>

  • 타입이 없는 튜플은 지역변수에 넣을 수 없습니다.
    • var invalid = (10, null); → 유효하지 않음.
  • 애리티(arity)가 동일하고, 그에 대응하는 요소의 타입이 암시적으로 변환 가능할 경우 튜플 리터럴을 튜플 타입으로 암시적 변환할 수 있습니다.
    • 튜플 리터럴 : 각 요소는 값을 가지며, 이름을 선택적으로 지정할 수 있습니다 - (5, title: ”text”)
    • 튜플 타입 : 각 요소가 타입을 가지며, 이름을 선택적으로 지정할 수 있습니다 - (int x, string)

 


<Tuple(튜플) 사용 예시>

//튜플 변수를 선언하고 초기화
(double, int) t1 = (4.5, 3);

Console.WriteLine($"Tuple with elements {t1.Item1} and {t1.Item2}.");
//Tuple with elements 4.5 and 3. 출력

var t2 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
					19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30);
Console.WriteLine((t3.Item25)); //25 출력

 

튜플의 가장 일반적인 사용 사례는 메서드 반환 형식입니다.

아래 예시와 같이 out 메서드 매개 변수를 정의하는 대신, 메서드 결과를 튜플 반환 형식으로 그룹화합니다.

(int min, int max) FindMinMax(int[] input)
{
    if (input == null || input.Length == 0)
    {
        throw new ArgumentException("최소, 최대값 없음 -> null이거나 empty array.");
    }
    var min = int.MaxValue;
    var max = int.MinValue;
    foreach (var i in input)
    {
        if (i < min)
        {
            min = i;
        }
        if (i > max)
        {
            max = i;
        }
    }
    return (min, max);
}

var arr = new[] { -9, 0, 45, 12 };

var (min, max) = FindMinMax(arr);
Console.WriteLine(($"{min} and {max}"));

(int, int) tup = FindMinMax(arr);
Console.WriteLine(($"{tup.Item1} and {tup.Item2}"));
//둘 다 -9 and 45 찍힘.
반응형

'[Unity] > [C#]' 카테고리의 다른 글

[C#] 확장 메서드 기법  (0) 2022.09.29
[C#] 메서드 매개 변수 : params, in, ref, out  (0) 2022.09.28
[C#] Action과 Func  (0) 2022.09.26
[C#] 비동기 메서드(async, await)  (0) 2022.09.21
[C#] ConditionalAttribute  (0) 2022.09.20