介绍:
元组是 C# 中的一个数据结构,用于将多个元素组合成一个单一对象,而无需定义自定义类或结构。C# 提供了两种主要的元组实现:
-
System.Tuple (传统元组)
.NET Framework 4.0 开始引入,是不可变的(创建后不能修改)。
// 创建元组
Tuple<int, string, bool> tuple1 = Tuple.Create(1, "Apple", true);
// 访问元素
int id = tuple1.Item1;
string name = tuple1.Item2;
bool isActive = tuple1.Item3;
// 嵌套元组
Tuple<int, string, Tuple<double, double>> nestedTuple =
Tuple.Create(1, "Point", Tuple.Create(3.14, 2.71));
-
ValueTuple (C# 7.0 引入的值类型元组)
更现代的实现,支持值语义、命名元素和更灵活的使用方式。
// 创建值元组
(int id, string name, bool isActive) tuple2 = (1, "Apple", true);
// 命名元素
var person = (Id: 1, Name: "John", Age: 30);
Console.WriteLine(person.Name); // 输出 "John"
// 解构
var (id, name, age) = person;
Console.WriteLine(id); // 输出 1
// 作为方法返回值
public (int sum, int product) Calculate(int a, int b)
{
return (a + b, a * b);
}
var results = Calculate(3, 4);
Console.WriteLine($"Sum: {results.sum}, Product: {results.product}");
区别
| 特性 | System.Tuple | ValueTuple |
|---|---|---|
| 类型 | 引用类型 | 值类型 |
| 可变性 | 不可变 | 可变 |
| 元素命名 | 不支持 | 支持 |
| 性能 | 较低(堆分配) | 较高(通常栈分配) |
| 相等性比较 | 引用相等 | 值相等 |
| 引入版本 | .NET 4.0 | C# 7.0 / .NET Core 1.0 |