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

การสร้าง Quadruple Tuple (4-Tuple) ใน C#

Tuple ใน C# เป็นโครงสร้างข้อมูลที่จัดกลุ่มค่าหลายค่าเข้าด้วยกัน Quadruple หรือ 4-Tuple คือ Tuple ที่มี 4 องค์ประกอบ (<T1, T2, T3, T4>)

การสร้าง Tuple (C# 7.0+ ValueTuple - แนะนำ)

// Tuple Syntax (ValueTuple - Struct, Mutable)
var myTuple = (100, 200, 300, 400);

// หรือระบุชื่อ Element (Named Tuple)
var person = (Id: 1, Name: "John", Age: 30, Active: true);

// เข้าถึง
Console.WriteLine(person.Name);  // "John"
Console.WriteLine(person.Age);   // 30

Tuple Class (Legacy - Reference Type, Immutable)

using System;

// Tuple.Create Factory Method
var myTuple = Tuple.Create(100, 200, 300, 400);

// เข้าถึงผ่าน Item1, Item2, Item3, Item4
Console.WriteLine($"Item1: {myTuple.Item1}"); // 100
Console.WriteLine($"Item2: {myTuple.Item2}"); // 200
Console.WriteLine($"Item3: {myTuple.Item3}"); // 300
Console.WriteLine($"Item4: {myTuple.Item4}"); // 400

ผลลัพธ์

Item1: 100
Item2: 200
Item3: 300
Item4: 400

ValueTuple vs Tuple Class

คุณสมบัติValueTuple (Struct)Tuple Class (Reference)
Syntax(a, b, c, d)Tuple.Create(a,b,c,d)
MutabilityMutableImmutable
Performanceดีกว่า (No Heap Alloc)มี Overhead
Named Elementsรองรับ (Name: val)ไม่รองรับ (Item1...)
Deconstructionรองรับ var (a,b,c,d) = t;ไม่รองรับ

Deconstruction (แยกค่าออกมา)

var (id, name, age, active) = person;
Console.WriteLine(id);    // 1
Console.WriteLine(name);  // "John"

// Discard ด้วย _
var (_, name, _, _) = person; // ต้องการแค่ Name

เมื่อไหร่ใช้ Tuple?

  • Return Multiple Values จาก Method
  • Group ข้อมูลชั่วคราว ไม่คุ้มค่าสร้าง Class/Record
  • LINQ Queries, Pattern Matching