Tuple은 class 타입이며 복사 및 할당에 대한 일관된 규칙을 제공한다. Tuple에 지정한 값들은 인스턴스가 생성되는 순간 Item1, Item2, Item3, .. 등의 이름으로 자동 매핑된다. (최근 버전에선 Item1, Item2가 아니고 원하는 이름을 지정할 수 있는 듯 하다.)
Tuple은 변경 불가 타입이기 때문에 Tuple을 생성하는 시점에 반드시 Tuple 내의 모든 값을 초기화(지정) 해 주어야 한다. Tuple 인스턴스가 생기고 나면 더는 속성을 변경할 수 없다.
KeyValuePair(이건 struct)와의 성능 비교에서, 객체를 많이 생성하는 경우엔 KeyValuePair가 낫고, 함수 인자 전달 용도에선 Tuple이 빠르다고 한다. Tuple이 인자로 전달된 땐 4바이트 복사만 일어나기 때문.
var tup1 = new Tuple<string, int>("hello", 34);
var tup2 = Tuple.Create<string, int>("hello", 34);
Console.WriteLine(tup1.Equals(tup2)); // True
Console.WriteLine(tup1); // (hello, 34)
// tup1.Item1 = "world"; // Read only, error!
댓글 없음:
댓글 쓰기