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

Phương thức ToTuple() trong C#

Phương thức mở rộng ToTuple() (trong namespace System, cần System.ValueTuple) chuyển đổi ValueTuple sang Tuple class (legacy). Ngược lại, ToValueTuple() chuyển Tuple → ValueTuple.

Ví dụ chuyển đổi

// ValueTuple (C# 7+)
var val = (1, 2, 3);

// Chuyển sang Tuple class
Tuple myTuple = val.ToTuple();

Mã nguồn hoàn chỉnh

using System;

class Program
{
    static void Main()
    {
        var val = (1, 2, 3);
        Console.WriteLine("ValueTuple: " + val);
        
        // Chuyển sang Tuple class
        Tuple myTuple = val.ToTuple();
        Console.WriteLine("Tuple: " + myTuple);
    }
}

Kết quả

ValueTuple: (1, 2, 3)
Tuple: (1, 2, 3)

Yêu cầu

  • Cài package System.ValueTuple (NuGet) cho .NET Framework cũ.
  • .NET Core / .NET 5+ đã có sẵn.
  • Cần using System; (extension method trong namespace System).

Chuyển ngược: Tuple → ValueTuple

// C# 7.3+ / .NET Core 2.0+
Tuple legacy = Tuple.Create(1, 2, 3);
var modern = legacy.ToValueTuple();  // ValueTuple

// Deconstruction tự động
var (a, b, c) = modern;

So sánh nhanh

Đặc điểmValueTupleTuple (Class)
Kiểustructclass
Tên elementCó (named)Không (Item1...)
DeconstructionCóKhông
MutableCóKhông
Hiệu suấtTốt hơnHeap allocation

Khi nào cần chuyển?

  • Tương tác API legacy yêu cầu Tuple<T>.
  • Serialization một số thư viện cũ.
  • Code mới: chỉ dùng ValueTuple.