[C#] Tuple
개요
Tuple이란?
=> 복수의 값을 리턴하여 사용할때 사용하는 C# 7.0의 기능
기본적으로 1개의 메소드에서 1개의 값을 반환, 아래의 방식으로 복수의 값을 반환할 수 있었으나,
튜플을 사용하면 한번에 복수의 값을 반환하여 사용하기 때문에 아래의 방식 대비 효율적, 깔끔하게 구현 할 수 있게 되었다.
기존의 방법
- out 매개변수 한정자를 통해서 여러 개의 값을 넘겨주는 방법 (비동기 메서드에서는 사용할 수 없음)
- System.Tuple<…> 형식을 통한 튜플 객체 할당 (튜플 객체를 따로 할당해야 하는 것도 그렇지만 코드가 길게 늘어짐)
- 두 개 이상의 값을 반환해야 하는 메소드마다 전달을 위한 클래스/구조체를 따로 만들기 (필요 이상으로 코드 오버헤드가 생기게 됨)
- dynamic 반환형을 통해 익명 타입(Anonymous types)의 객체를 반환하는 방법 (정적 자료형 검사 X, 오버헤드가 상당함)
사용법
- 먼저 다음과 같이 List<Tuple<»형태의 List를 생성한다.
- 데이터를 입력하는 방식은 일반적인 list와 같으며, 복수의 값을 넣는다는점만 다를뿐이다.
- 출력시에는 지정한 타입 순서대로 Item1, Item2, Item3라는 이름으로 출력할 수 있다.
예제
[예제]
using System;
using System.Collections.Generic;
namespace TupleTest
{
class Program
{
static void Main(string[] args)
{
List<Tuple<int, string, string>> m_tuple_list = new List<Tuple<int, string, string>>();
m_tuple_list.Add(new Tuple<int, string, string>(1, "result1.Title", "result1.Text"));
m_tuple_list.Add(new Tuple<int, string, string>(2, "result2.Title", "result2.Text"));
m_tuple_list.Add(new Tuple<int, string, string>(3, "result3.Title", "result3.Text"));
m_tuple_list.Add(new Tuple<int, string, string>(4, "result4.Title", "result4.Text"));
for(int count = 0; count < m_tuple_list.Count; count++)
{
Console.WriteLine("{0} : {1} : {2}", m_tuple_list[count].Item1, m_tuple_list[count].Item2, m_tuple_list[count].Item3);
}
}
}
}
[출력]