คลาส Tuple (Legacy) รองรับสูงสุด 7 Generic Type Parameters โดยตรง สำหรับ 8 Elements ขึ้นไป ต้องใช้ Rest Property ที่เป็น Nested Tuple
โครงสร้าง 8-Tuple
Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>
Element ที่ 8 (TRest) ต้องเป็น Tuple<...> อีกตัวหนึ่ง
ตัวอย่าง: 8 Elements
using System;
public class Program
{
public static void Main()
{
// สร้าง 8-Tuple: 7 Elements + Rest (1 Element)
var myTuple = Tuple.Create(
1, // T1
2.5M, // T2
"Tom", // T3
"100", // T4
5, // T5
10.5M, // T6
"Henry", // T7
Tuple.Create("100") // TRest (Nested Tuple)
);
Console.WriteLine("Item1: " + myTuple.Item1); // 1
Console.WriteLine("Item2: " + myTuple.Item2); // 2.5
Console.WriteLine("Item3: " + myTuple.Item3); // Tom
Console.WriteLine("Item4: " + myTuple.Item4); // 100
Console.WriteLine("Item5: " + myTuple.Item5); // 5
Console.WriteLine("Item6: " + myTuple.Item6); // 10.5
Console.WriteLine("Item7: " + myTuple.Item7); // Henry
Console.WriteLine("Item8: " + myTuple.Rest); // (100)
}
}
ผลลัพธ์
Item1: 1 Item2: 2.5 Item3: Tom Item4: 100 Item5: 5 Item6: 10.5 Item7: Henry Item8: (100)
เข้าถึง Element ใน Rest
// Rest เป็น Tuple
ValueTuple (C# 7+) - ไม่มีข้อจำกัด
// ValueTuple รองรับ Elements กี่ตัวก็ได้ var bigTuple = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); var (a, b, c, d, e, f, g, h, i, j, k, l) = bigTuple;
สรุป: Tuple Class (Legacy) จำกัด 7 Elements ต้องใช้ Rest Property สำหรับ 8+ | ValueTuple (Modern) ไม่มีข้อจำกัด ควรใช้ ValueTuple แทน