Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Value Tuple trong C#

ValueTuple là kiểu giá trị (value type) đại diện cho tuple, được giới thiệu từ C# 7.0. Khác với Tuple<T> (reference type, class), ValueTuple là struct, hiệu suất tốt hơn, hỗ trợ deconstruction và named elements.

Cài đặt

Trong .NET Framework cũ, cần cài package NuGet:

  1. Right-click project → Manage NuGet Packages
  2. Browse → tìm "System.ValueTuple" → Install

.NET Core / .NET 5+ đã có sẵn.

Ví dụ cơ bản

var val = (5, 50, 500, 5000);  // ValueTuple

// Truy cập bằng Item1, Item2... hoặc deconstruction
var (a, b, c, d) = val;
Console.WriteLine(a);  // 5

// Hoặc dùng tên (named tuple)
var person = (Name: "John", Age: 30, City: "Hanoi");
Console.WriteLine(person.Name);  // John

Mã nguồn mẫu

using System;

class Program
{
    static void Main()
    {
        var val = (5, 50, 500, 5000);
        Console.WriteLine("Add System.ValueTuple package to run this program!");
        if (val.Item2 == 50)
        {
            Console.WriteLine(val);
        }
    }
}

Kết quả

(5, 50, 500, 5000)

Ưu điểm ValueTuple so với Tuple (class)

Đặc điểmTuple (Class)ValueTuple (Struct)
KiểuReference typeValue type
Hiệu suấtHeap allocationStack allocation, no GC
Tên thành phầnKhông (Item1...)Có (named elements)
DeconstructionKhôngCó
MutableImmutableMutable

Chuyển đổi

// ValueTuple → Tuple
Tuple t = val.ToTuple();

// Tuple → ValueTuple (C# 7.3+)
var vt = t.ToValueTuple();