C# 7 이전 버전에서는 메서드에서 하나의 값만을 리턴 했지만, 7버전 부터는 튜플을 사용하여 메서드로부터 복수 개의 값들을 리턴할 수 있다.
메서드 원형을 정의할 때 리턴타입이 복수 개이므로 튜플 리턴 타입(tuple return type)표현식을 사용하는 데
, 괄호 ()안에 순서대로 나열만 하면 된다.
메서드에서 여러 값을 리턴할 때는 괄호 ()안에 콤마로 분리하여 순서대로 리턴.
즉 return (a,b,c) => 튜플 리터럴(tuple literal)
변수는 r.item1 .......로 사용
(int count, int sum, double average) Calculate(List<int> data) //튜플 리턴타입
{
int cnt = 0, sum = 0;
double avg = 0;
foreach (var i in data)
{
cnt++;
sum += i;
}
avg = sum / cnt;
return (cnt, sum, avg); //튜플 리터럴
}
private void Run()
{
var list = new List<int> { 1, 2, 3, 4, 5 };
var r = Calculate(list); // 튜플 결과
Console.WriteLine($"{r.count}, {r.sum}, {r.average}");
Console.WriteLine($"{r.Item1}, {r.Item2}, {r.Item3}");
}
튜플로 복수 개의 값들이 리턴될 경우 이를 각각의 변수로 쪼개서 할당하는 것을 칭한다.
var list = new List<int> { 1, 2, 3, 4, 5 };
(int cnt, int sum, double avg) = Calculate(list); // Deconstruction
//(var cnt, var sum, var avg) = Calculate(list);
//var (cnt, sum, avg) = Calculate(list);
(cnt, sum, avg) = Calculate(list);