[C#] C# 코딩공부 #6 C# 7.0 튜플

개발Velog·2020년 2월 11일
0

C#

목록 보기
6/9

C# 7.0 튜플

C# 7 이전 버전에서는 메서드에서 하나의 값만을 리턴 했지만, 7버전 부터는 튜플을 사용하여 메서드로부터 복수 개의 값들을 리턴할 수 있다.

메서드 원형을 정의할 때 리턴타입이 복수 개이므로 튜플 리턴 타입(tuple return type)표현식을 사용하는 데
, 괄호 ()안에 순서대로 나열만 하면 된다.

메서드에서 여러 값을 리턴할 때는 괄호 ()안에 콤마로 분리하여 순서대로 리턴.
즉 return (a,b,c) => 튜플 리터럴(tuple literal)

예제 소스 1 - 기본 결과

변수는 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}");
}

예제 소스 2 - 튜플Deconstruction

튜플로 복수 개의 값들이 리턴될 경우 이를 각각의 변수로 쪼개서 할당하는 것을 칭한다.


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);
출처 및 참조 : http://www.csharpstudy.com/
profile
안녕하세요. 데이터와 동고동락 중인 개발자 입니다.

0개의 댓글