ValueTuple ((int, string)) là kiểu value type nhẹ để nhóm nhiều giá trị lại mà không cần khai báo class/struct riêng — hữu ích khi muốn trả nhiều giá trị từ một method.
csharp
(int count, string name) GetUser() => (42, "Định");
var u = GetUser();
Console.WriteLine(u.count); // 42 — truy cập qua tên fieldKhác Tuple<> cũ: Tuple<> là reference type, bất biến, chỉ có Item1, Item2... khó đọc. ValueTuple là value type, có tên field, và có thể sửa.
Deconstruction tách tuple thành các biến rời:
csharp
var (count, name) = GetUser(); // count = 42, name = "Định"
(int a, int b) = (1, 2);Kiểu tự viết cũng deconstruct được nếu định nghĩa method Deconstruct:
csharp
record Point(int X, int Y);
var (x, y) = new Point(3, 4); // record sinh sẵn DeconstructDùng ValueTuple cho kết quả tạm, nội bộ; nếu giá trị có ý nghĩa domain lâu dài, một record/class đặt tên rõ vẫn tốt hơn.