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

วิธีดึงสมาชิกที่ 7 ของ Tuple ใน C#

บทความนี้สาธิตวิธีการดึงสมาชิกที่ 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 หรือชื่อที่ตั้งเอง