수색…
튜플 생성하기
튜플은 제네릭 형식 Tuple<T1>
- Tuple<T1,T2,T3,T4,T5,T6,T7,T8>
집니다. 각 유형은 1 - 8 개의 요소가 들어있는 튜플을 나타냅니다. 요소는 다른 유형 일 수 있습니다.
// tuple with 4 elements
var tuple = new Tuple<string, int, bool, MyClass>("foo", 123, true, new MyClass());
튜플은 정적 Tuple.Create
메서드를 사용하여 만들 수도 있습니다. 이 경우 요소의 형식은 C # 컴파일러에서 유추됩니다.
// tuple with 4 elements
var tuple = Tuple.Create("foo", 123, true, new MyClass());
7.0
C # 7.0부터, 튜플은 ValueTuple을 사용하여 쉽게 생성 할 수 있습니다.
var tuple = ("foo", 123, true, new MyClass());
더 쉽게 분해 할 수 있도록 요소의 이름을 지정할 수 있습니다.
(int number, bool flag, MyClass instance) tuple = (123, true, new MyClass());
튜플 요소에 액세스하기
튜플 요소에 액세스하려면 Item1
- Item8
속성을 사용하십시오. 인덱스 번호가 튜플 크기보다 작거나 같은 속성 만 사용할 수 있습니다 (즉, Tuple<T1,T2>
Item3
속성에 액세스 할 수 없습니다).
var tuple = new Tuple<string, int, bool, MyClass>("foo", 123, true, new MyClass());
var item1 = tuple.Item1; // "foo"
var item2 = tuple.Item2; // 123
var item3 = tuple.Item3; // true
var item4 = tuple.Item4; // new My Class()
튜플 비교 및 정렬
튜플은 요소를 기반으로 비교할 수 있습니다.
예를 들어, 요소가 Tuple
인 열거 형은 지정된 요소에 정의 된 비교 연산자를 기반으로 정렬 할 수 있습니다.
List<Tuple<int, string>> list = new List<Tuple<int, string>>();
list.Add(new Tuple<int, string>(2, "foo"));
list.Add(new Tuple<int, string>(1, "bar"));
list.Add(new Tuple<int, string>(3, "qux"));
list.Sort((a, b) => a.Item2.CompareTo(b.Item2)); //sort based on the string element
foreach (var element in list) {
Console.WriteLine(element);
}
// Output:
// (1, bar)
// (2, foo)
// (3, qux)
또는 정렬 사용을 되돌리려면 :
list.Sort((a, b) => b.Item2.CompareTo(a.Item2));
메서드에서 여러 값 반환
튜플은 매개 변수를 사용하지 않고 메서드에서 여러 값을 반환하는 데 사용할 수 있습니다. 다음 예제에서 AddMultiply
는 두 개의 값 (sum, product)을 반환하는 데 사용됩니다.
void Write()
{
var result = AddMultiply(25, 28);
Console.WriteLine(result.Item1);
Console.WriteLine(result.Item2);
}
Tuple<int, int> AddMultiply(int a, int b)
{
return new Tuple<int, int>(a + b, a * b);
}
산출:
53
700
이제 C # 7.0은 값 튜플을 사용하는 메서드에서 여러 값을 반환하는 다른 방법을 제공합니다. ValueTuple
구조체에 대한 추가 정보 .
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow