บทความนี้สาธิตวิธีการดึงสมาชิกที่ 7 (Item7) ของ Tuple ใน C# พร้อมการเข้าถึงสมาชิกอื่นๆ และการเปรียบเทียบ Tuple
ตัวอย่างที่ 1: Tuple 7 สมาชิก (Tuple<T1...T7>)
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("Is Tuple1 equal to Tuple2? = " + tuple1.Equals(tuple2));
Console.WriteLine("HashCode of Tuple1 = " + tuple1.GetHashCode());
Console.WriteLine("HashCode of Tuple2 = " + tuple2.GetHashCode());
Console.WriteLine("Tuple1 Item 1st = " + tuple1.Item1);
Console.WriteLine("Tuple2 Item 1st = " + tuple2.Item1);
Console.WriteLine("Tuple1 Item 2nd = " + tuple1.Item2);
Console.WriteLine("Tuple2 Item 2nd = " + tuple2.Item2);
Console.WriteLine("Tuple1 Item 4th = " + tuple1.Item4);
Console.WriteLine("Tuple2 Item 4th = " + tuple2.Item4);
Console.WriteLine("Tuple1 Item 5th = " + tuple1.Item5);
Console.WriteLine("Tuple2 Item 5th = " + tuple2.Item5);
Console.WriteLine("Tuple1 Item 6th = " + tuple1.Item6);
Console.WriteLine("Tuple2 Item 6th = " + tuple2.Item6);
Console.WriteLine("Tuple1 Item 7th = " + tuple1.Item7);
Console.WriteLine("Tuple2 Item 7th = " + tuple2.Item7);
}
}
ผลลัพธ์
Is Tuple1 equal to Tuple2? = True HashCode of Tuple1 = 3231587 HashCode of Tuple2 = 3231587 Tuple1 Item 1st = 75 Tuple2 Item 1st = 75 Tuple1 Item 2nd = 200 Tuple2 Item 2nd = 200 Tuple1 Item 4th = 700 Tuple2 Item 4th = 700 Tuple1 Item 5th = 100 Tuple2 Item 5th = 100 Tuple1 Item 6th = 1200 Tuple2 Item 6th = 1200 Tuple1 Item 7th = 1500 Tuple2 Item 7th = 1500
ตัวอย่างที่ 2: Tuple 8 สมาชิก (Tuple<T1...T8>)
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 of Tuple = " + tuple.GetHashCode());
Console.WriteLine("Tuple Item 1st = " + tuple.Item1);
Console.WriteLine("Tuple Item 2nd = " + tuple.Item2);
Console.WriteLine("Tuple Item 3rd = " + tuple.Item3);
Console.WriteLine("Tuple Item 4th = " + tuple.Item4);
Console.WriteLine("Tuple Item 5th = " + tuple.Item5);
Console.WriteLine("Tuple Item 6th = " + tuple.Item6);
Console.WriteLine("Tuple Item 7th = " + tuple.Item7);
// Item8 สำหรับสมาชิกที่ 8
Console.WriteLine("Tuple Item 8th = " + tuple.Rest.Item1); // สำหรับ Tuple 8+ ใช้ Rest
}
}
ผลลัพธ์
HashCode of Tuple = 49989024 Tuple Item 1st = 1200 Tuple Item 2nd = 1500 Tuple Item 3rd = 2200 Tuple Item 4th = 2700 Tuple Item 5th = 3100 Tuple Item 6th = 3500 Tuple Item 7th = 4500
คำอธิบายเพิ่มเติม
- Tuple เป็น immutable (ไม่สามารถเปลี่ยนค่าได้หลังสร้าง)
- เข้าถึงสมาชิกผ่าน property:
Item1ถึงItem7(สำหรับ 7-tuple) - Tuple 8 ขึ้นไป: สมาชิกที่ 8 อยู่ใน
Rest.Item1, 9 ในRest.Rest.Item1ฯลฯ Equals()เปรียบเทียบค่า (value equality) - ต่างจาก class ปกติGetHashCode()คำนวณจากค่าทั้งหมด - tuple ที่มีค่าเหมือนกันจะได้ hash เหมือนกัน- C# 7+ มี
ValueTuple(struct) ที่มี syntax สะดวกกว่า:(1, 2, 3)และเข้าถึงได้ด้วย.Item1หรือชื่อที่ตั้งเอง