Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

วิธีดึงองค์ประกอบที่หกของ Tuple ใน C#

คลาส Tuple ให้คุณสมบัติ Item1 ถึง Item7 และ Rest สำหรับองค์ประกอบที่ 8 ขึ้นไป โดย Item6 คือองค์ประกอบที่หก

ตัวอย่างที่ 1: Tuple 7 องค์ประกอบ (Item6 = 1200)

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);
        Console.WriteLine("Tuple1 องค์ประกอบที่ 6 = " + tuple1.Item6); // <- องค์ประกอบที่หก
        Console.WriteLine("Tuple2 องค์ประกอบที่ 6 = " + tuple2.Item6);
        Console.WriteLine("Tuple1 องค์ประกอบที่ 7 = " + tuple1.Item7);
        Console.WriteLine("Tuple2 องค์ประกอบที่ 7 = " + tuple2.Item7);
    }
}

ผลลัพธ์

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
Tuple1 องค์ประกอบที่ 6 = 1200
Tuple2 องค์ประกอบที่ 6 = 1200
Tuple1 องค์ประกอบที่ 7 = 1500
Tuple2 องค์ประกอบที่ 7 = 1500

ตัวอย่างที่ 2: Tuple 8 องค์ประกอบ (Item6 = 3500)

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);
        // องค์ประกอบที่ 8 เข้าถึงผ่าน tuple.Rest.Item1
    }
}

ผลลัพธ์

HashCode ของ Tuple = 49989024
องค์ประกอบที่ 1 = 1200
องค์ประกอบที่ 2 = 1500
องค์ประกอบที่ 3 = 2200
องค์ประกอบที่ 4 = 2700
องค์ประกอบที่ 5 = 3100
องค์ประกอบที่ 6 = 3500
องค์ประกอบที่ 7 = 4500

การเข้าถึงองค์ประกอบที่ 8 ขึ้นไป

// Tuple 8 องค์ประกอบ: Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>
var tuple8 = Tuple.Create(1, 2, 3, 4, 5, 6, 7, Tuple.Create(8, 9, 10));

Console.WriteLine(tuple8.Item1);  // 1
Console.WriteLine(tuple8.Item7);  // 7
Console.WriteLine(tuple8.Rest.Item1); // 8 (องค์ประกอบที่ 8)
Console.WriteLine(tuple8.Rest.Item2); // 9 (องค์ประกอบที่ 9)
Console.WriteLine(tuple8.Rest.Item3); // 10 (องค์ประกอบที่ 10)

แนะนำ: ใช้ ValueTuple (C# 7.0+)

// ValueTuple - เขียนง่าย อ่านง่าย ประสิทธิภาพดี
var data = (A: 1, B: 2, C: 3, D: 4, E: 5, F: 6, G: 7, H: 8);
Console.WriteLine(data.F); // 6 (องค์ประกอบที่ 6)

// หรือแบบไม่มีชื่อ
var values = (1, 2, 3, 4, 5, 6, 7, 8);
Console.WriteLine(values.Item6); // 6

สรุปการเข้าถึง Tuple คลาสเก่า

ตำแหน่งคุณสมบัติหมายเหตุ
1Item1
2Item2
3Item3
4Item4
5Item5
6Item6
7Item7
8+Rest.Item1, Rest.Item2...ผ่านคุณสมบัติ Rest (เป็น Tuple ต่อยอด)