Giới thiệu
Tuple (namespace System) là kiểu tham chiếu bất biến (immutable) chứa số lượng cố định phần tử. Phương thức GetType() trả về Type mô tả cấu trúc tuple (ví dụ: System.Tuple`3[Int32, Int32, Tuple`2[Int32, Int32]]).
Ví dụ 1: Tuple lồng nhau 7 phần tử
using System;
public class Demo
{
public static void Main(string[] args)
{
var tuple1 = Tuple.Create(150, 1500, Tuple.Create(50, 100));
var tuple2 = Tuple.Create(150, 1500, Tuple.Create(100, 200));
Console.WriteLine("Tuple1 bằng Tuple2? = " + tuple1.Equals(tuple2));
Console.WriteLine("HashCode Tuple1 = " + tuple1.GetHashCode());
Console.WriteLine("Kiểu Tuple1 = " + tuple1.GetType());
Console.WriteLine("HashCode Tuple2 = " + tuple2.GetHashCode());
Console.WriteLine("Kiểu Tuple2 = " + tuple2.GetType());
}
}
Kết quả
Tuple1 bằng Tuple2? = False
HashCode Tuple1 = 188892
Kiểu Tuple1 = System.Tuple`3[System.Int32,System.Int32,System.Tuple`2[System.Int32,System.Int32]]
HashCode Tuple2 = 191462
Kiểu Tuple2 = System.Tuple`3[System.Int32,System.Int32,System.Tuple`2[System.Int32,System.Int32]]
Ví dụ 2: Tuple đơn giản 2 phần tử
using System;
public class Demo
{
public static void Main(string[] args)
{
var tuple1 = Tuple.Create(10, 20);
var tuple2 = Tuple.Create(30, 40);
Console.WriteLine("Tuple1 bằng Tuple2? = " + tuple1.Equals(tuple2));
Console.WriteLine("HashCode Tuple1 = " + tuple1.GetHashCode());
Console.WriteLine("Kiểu Tuple1 = " + tuple1.GetType());
Console.WriteLine("HashCode Tuple2 = " + tuple2.GetHashCode());
Console.WriteLine("Kiểu Tuple2 = " + tuple2.GetType());
}
}
Kết quả
Tuple1 bằng Tuple2? = False
HashCode Tuple1 = 350
Kiểu Tuple1 = System.Tuple`2[System.Int32,System.Int32]
HashCode Tuple2 = 1014
Kiểu Tuple2 = System.Tuple`2[System.Int32,System.Int32]
Lưu ý
- Kiểu tuple được mã hóa:
Tuple`N[T1, T2, ..., TN]với N = số phần tử. - Tuple là reference type,
Equalsso sánh giá trị từng phần tử. - Từ C# 7.0, có
ValueTuple(struct) với cú pháp(int, string)nhẹ hơn và hỗ trợ deconstruction.