HOWTO · Csharp
C#에서 튜플 목록 초기화
이 글에서는 C#에서 튜플 목록을 효율적으로 초기화하는 여러 가지 방법을 살펴봅니다.
이 페이지의 내용
C#에서 튜플 목록을 초기화하려면 참조 튜플을 위한 List<Tuple<int, string>>와 값 튜플을 위한 List<(int, string)> 중에서 선택하세요. 컬렉션 초기화 구문으로 항목을 만들거나 Add()로 추가하거나, 기존 시퀀스를 LINQ로 변환할 수 있습니다. 두 튜플 형식은 서로 다르므로 코드의 나머지 부분에서 사용하는 형식에 맞춰 선택해야 합니다.
C#에서 Tuple.Create() 메서드로 튜플 목록 초기화하기
Tuple.Create()는 참조 튜플을 만듭니다. 컬렉션 초기화 구문을 사용하면 List<Tuple<int, string>>를 선언하면서 여러 항목을 만들 수 있습니다.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var tupleList = new List<Tuple<int, string>>
{
Tuple.Create(1, "Apple"),
Tuple.Create(2, "Banana"),
Tuple.Create(3, "Cherry")
};
foreach (var tuple in tupleList)
{
Console.WriteLine(tuple);
}
}
}
제네릭 목록 형식은 튜플 요소의 형식을 나타냅니다. 여기서는 int 다음에 string이 옵니다. Tuple.Create()는 각 값 쌍에서 형식을 추론하며, 반복문은 항목이 삽입된 순서대로 순회합니다. 오버로드는 Tuple.Create() 메서드 문서를 참조하세요.
C#에서 () 표기법으로 튜플 목록 초기화하기
목록에 () 표기법으로 작성하는 값 튜플을 저장할 수도 있습니다. 다음 예제는 List<(int, string)>를 사용해 항목 세 개를 바로 초기화합니다.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var tupleList = new List<(int, string)>
{
(1, "Apple"),
(2, "Banana"),
(3, "Cherry")
};
foreach (var tuple in tupleList)
{
Console.WriteLine(tuple);
}
}
}
여기서 (int, string)은 값 튜플 요소 형식이며, 괄호로 묶은 각 쌍이 목록 항목 하나를 나타냅니다. 같은 쌍도 다른 목록 요소 형식으로 표현할 수 있습니다. C#의 값 튜플에 대해 자세히 알아보세요.
C#에서 List<Tuple<T1, T2>>와 Add()로 튜플 목록 초기화하기
항목이 시간이 지나면서 생기거나 애플리케이션 로직에 따라 목록을 구성할 때는 Add()를 사용하세요. 빈 목록을 만든 다음 참조 튜플을 하나씩 추가하면 됩니다.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var tupleList = new List<Tuple<int, string>>();
tupleList.Add(Tuple.Create(1, "Apple"));
tupleList.Add(Tuple.Create(2, "Banana"));
tupleList.Add(Tuple.Create(3, "Cherry"));
foreach (var tuple in tupleList)
{
Console.WriteLine(tuple);
}
}
}
목록에 선언된 형식에 따라 저장되는 튜플 종류가 결정됩니다. Add()를 호출할 때마다 Tuple<int, string> 하나가 추가되고, Tuple.Create()는 전달된 값으로 해당 참조 튜플을 만듭니다.
C#에서 LINQ로 튜플 목록 초기화하기
튜플 항목이 기존 시퀀스에서 만들어질 때는 LINQ가 유용합니다. Select()는 각 숫자를 튜플로 변환하고, ToList()는 변환된 시퀀스를 목록으로 만듭니다.
using System;
using System.Linq;
class Program
{
static void Main()
{
var tupleList = Enumerable.Range(1, 3)
.Select(i => Tuple.Create(i, $"Fruit{i}"))
.ToList();
foreach (var tuple in tupleList)
{
Console.WriteLine(tuple);
}
}
}
Enumerable.Range(1, 3)은 1, 2, 3을 제공합니다. 변환 과정에서 각 숫자는 문자열과 짝을 이루며, ToList()는 List<Tuple<int, string>>를 반환합니다. 변환에 Tuple.Create()를 사용하므로 이 항목들은 참조 튜플입니다.
결론
값이 정해져 있다면 Tuple.Create()나 값 튜플 리터럴을 사용하는 컬렉션 초기화 구문이 간결합니다. List<Tuple<T1, T2>>를 점진적으로 구성하려면 Add()를 사용하고, 기존 시퀀스를 튜플 항목으로 변환하려면 LINQ를 사용하세요. 참조 튜플(Tuple<T1, T2>)과 값 튜플((T1, T2))은 서로 다른 형식이므로 코드에서 사용하는 API와 데이터에 맞는 형식을 일관되게 사용해야 합니다.