ใน C# คลาส Tuple เข้าถึง element ที่ 5 ได้ผ่าน property Item5 (สำหรับ Tuple ที่มี 5 elements ขึ้นไป) ตัวอย่างนี้แสดงการเข้าถึง Item5 และ Item1
ตัวอย่างโค้ดที่ 1: Tuple 7 Elements
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 5th = " + tuple1.Item5);
Console.WriteLine("Tuple2 Item 5th = " + tuple2.Item5);
}
}
ผลลัพธ์
Is Tuple1 equal to Tuple2? = True
HashCode of Tuple1 = 3231587
HashCode of Tuple2 = 3231587
Tuple1 Item 5th = 100
Tuple2 Item 5th = 100
ตัวอย่างโค้ดที่ 2: Tuple 8 Elements
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 = tuple.Rest.Item1
}
}
ผลลัพธ์
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 Properties
| Tuple Size | Properties |
|---|---|
| 1 | Item1 |
| 2 | Item1, Item2 |
| 3 | Item1, Item2, Item3 |
| 4 | Item1, Item2, Item3, Item4 |
| 5 | Item1, Item2, Item3, Item4, Item5 |
| 6 | Item1..Item6 |
| 7 | Item1..Item7 |
| 8 | Item1..Item7, Rest (Tuple) |
Tuple.Create Factory Method
// สร้าง Tuple ได้ถึง 8 elements โดยตรง
var t1 = Tuple.Create(1);
var t2 = Tuple.Create(1, 2);
var t3 = Tuple.Create(1, 2, 3);
var t4 = Tuple.Create(1, 2, 3, 4);
var t5 = Tuple.Create(1, 2, 3, 4, 5);
var t6 = Tuple.Create(1, 2, 3, 4, 5, 6);
var t7 = Tuple.Create(1, 2, 3, 4, 5, 6, 7);
var t8 = Tuple.Create(1, 2, 3, 4, 5, 6, 7, Tuple.Create(8)); // 8th ใน Rest
ValueTuple (C# 7+) - ทันสมัยกว่า
// เข้าถึง element ที่ 5
var tuple = (1, 2, 3, 4, 5, 6, 7);
Console.WriteLine(tuple.Item5); // 5
// Named tuple - อ่านง่ายกว่า
var data = (Id: 1, Name: "John", Age: 30, City: "NYC", Score: 95.5);
Console.WriteLine(data.Score); // 95.5 - ใช้ชื่อแทน Item5
ข้อแนะนำ
- ใช้
ValueTuple(struct) แทนTuple(class) ในโค้ดใหม่ - เร็วกว่า, รองรับ named elements Item5ใช้ได้ก็ต่อเมื่อ Tuple มี 5 elements ขึ้นไป- Tuple เป็น immutable - ไม่สามารถแก้ไข Item5 หลังสร้างได้