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

วิธีได้ Element แรกของ Tuple ใน C#

ใน C# คลาส Tuple เข้าถึงสมาชิกได้ผ่าน property Item1, Item2, ..., Item7 และ Rest (สำหรับ Tuple 8 elements ขึ้นไป) โดย Item1 คือ element แรกเสมอ

ตัวอย่างโค้ดที่ 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);
        Console.WriteLine("Tuple1 Item 1st = " + tuple1.Item1);
        Console.WriteLine("Tuple2 Item 1st = " + tuple2.Item1);
    }
}

ผลลัพธ์

Is Tuple1 equal to Tuple2? = True
HashCode of Tuple1 = 3231587
HashCode of Tuple2 = 3231587
Tuple1 Item 5th = 100
Tuple2 Item 5th = 100
Tuple1 Item 1st = 75
Tuple2 Item 1st = 75

ตัวอย่างโค้ดที่ 2: Tuple 8 Elements (มี Rest)

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 ใน .NET

Tuple แบบใหม่: ValueTuple (C# 7+) - แนะนำให้ใช้


// Syntax สะดวก
var tuple = (10, 20, 30);
Console.WriteLine(tuple.Item1); // 10

// Named elements
var person = (Name: "John", Age: 30, City: "NYC");
Console.WriteLine(person.Name); // John
Console.WriteLine(person.Age);  // 30

// Deconstruction
var (name, age, city) = person;

ความแตกต่างสำคัญ

ArityClassProperties
1Tuple<T1>Item1
2Tuple<T1, T2>Item1, Item2
3Tuple<T1, T2, T3>Item1, Item2, Item3
4Tuple<T1, T2, T3, T4>Item1, Item2, Item3, Item4
5Tuple<T1, T2, T3, T4, T5>Item1, Item2, Item3, Item4, Item5
6Tuple<T1, T2, T3, T4, T5, T6>Item1, Item2, Item3, Item4, Item5, Item6
7Tuple<T1, T2, T3, T4, T5, T6, T7>Item1, Item2, Item3, Item4, Item5, Item6, Item7
8Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>Item1..Item7, Rest (Tuple)
คุณสมบัติTuple (Class)ValueTuple (Struct)
Item1..Item7มีมี
Named elementsไม่มีมี
Deconstructionไม่มีมี
MutabilityImmutableMutable
PerformanceHeap allocationStack allocation