ใน C# คลาส Tuple ให้คุณสมบัติ Item1, Item2, Item3 ... ขึ้นไปตามจำนวนองค์ประกอบ เพื่อเข้าถึงค่าแต่ละตำแหน่ง โดย Item2 คือองค์ประกอบที่สอง (ดัชนี 1)
ตัวอย่างที่ 1: Tuple 7 องค์ประกอบ
using System;
public class Demo
{
public static void Main(string[] args)
{
var tuple1 = Tuple.Create(75, 200, 500, 700, 100, 1200, 1500);
var tuple2 = Tuple.Create(75, 200, 500, 700, 100, 1200, 1500);
Console.WriteLine("Tuple1 เท่ากับ Tuple2 หรือไม่? = " + tuple1.Equals(tuple2));
Console.WriteLine("HashCode ของ Tuple1 = " + tuple1.GetHashCode());
Console.WriteLine("HashCode ของ Tuple2 = " + tuple2.GetHashCode());
Console.WriteLine("Tuple1 องค์ประกอบที่ 1 = " + tuple1.Item1);
Console.WriteLine("Tuple2 องค์ประกอบที่ 1 = " + tuple2.Item1);
Console.WriteLine("Tuple1 องค์ประกอบที่ 2 = " + tuple1.Item2); // <- องค์ประกอบที่สอง
Console.WriteLine("Tuple2 องค์ประกอบที่ 2 = " + tuple2.Item2);
Console.WriteLine("Tuple1 องค์ประกอบที่ 4 = " + tuple1.Item4);
Console.WriteLine("Tuple2 องค์ประกอบที่ 4 = " + tuple2.Item4);
Console.WriteLine("Tuple1 องค์ประกอบที่ 5 = " + tuple1.Item5);
Console.WriteLine("Tuple2 องค์ประกอบที่ 5 = " + tuple2.Item5);
}
}
ผลลัพธ์
Tuple1 เท่ากับ Tuple2 หรือไม่? = True HashCode ของ Tuple1 = 3231587 HashCode ของ Tuple2 = 3231587 Tuple1 องค์ประกอบที่ 1 = 75 Tuple2 องค์ประกอบที่ 1 = 75 Tuple1 องค์ประกอบที่ 2 = 200 Tuple2 องค์ประกอบที่ 2 = 200 Tuple1 องค์ประกอบที่ 4 = 700 Tuple2 องค์ประกอบที่ 4 = 700 Tuple1 องค์ประกอบที่ 5 = 100 Tuple2 องค์ประกอบที่ 5 = 100
ตัวอย่างที่ 2: Tuple 8 องค์ประกอบ (ใช้ Tuple.Create ที่รองรับสูงสุด 8 องค์ประกอบ)
using System;
public class Demo
{
public static void Main(string[] args)
{
var tuple = Tuple.Create(1200, 1500, 2200, 2700, 3100, 3500, 4500, 5500);
Console.WriteLine("HashCode ของ Tuple = " + tuple.GetHashCode());
Console.WriteLine("องค์ประกอบที่ 1 = " + tuple.Item1);
Console.WriteLine("องค์ประกอบที่ 2 = " + tuple.Item2); // <- องค์ประกอบที่สอง
Console.WriteLine("องค์ประกอบที่ 3 = " + tuple.Item3);
Console.WriteLine("องค์ประกอบที่ 4 = " + tuple.Item4);
Console.WriteLine("องค์ประกอบที่ 5 = " + tuple.Item5);
Console.WriteLine("องค์ประกอบที่ 6 = " + tuple.Item6);
Console.WriteLine("องค์ประกอบที่ 7 = " + tuple.Item7);
// Item8 ไม่มีใน Tuple 7 องค์ประกอบ แต่ Tuple 8 องค์ประกอบมี Rest property
}
}
ผลลัพธ์
HashCode ของ Tuple = 49989024 องค์ประกอบที่ 1 = 1200 องค์ประกอบที่ 2 = 1500 องค์ประกอบที่ 3 = 2200 องค์ประกอบที่ 4 = 2700 องค์ประกอบที่ 5 = 3100 องค์ประกอบที่ 6 = 3500 องค์ประกอบที่ 7 = 4500
หมายเหตุเพิ่มเติม
- Tuple ใน C# เป็น immutable (ไม่สามารถเปลี่ยนค่าได้หลังสร้าง)
- ตั้งแต่ C# 7.0 แนะนำให้ใช้ ValueTuple (เช่น
(int, string, bool)) ซึ่งมีประสิทธิภาพดีกว่าและรองรับการตั้งชื่อองค์ประกอบได้ - ตัวอย่าง ValueTuple:
var person = (Name: "John", Age: 30);แล้วเข้าถึงได้ด้วยperson.Nameหรือperson.Item1