반응형
<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 |