在C#里,当我们想让一个方法返回多个值,又不想专门定义一个类时,Tuple元组是非常实用的工具。它允许把多个不同类型的数据打包成一个对象。C#早期提供了引用类型的Tuple,后来引入了轻量的结构体ValueTuple,并支持命名元组让代码可读性更好。

传统Tuple的用法
System.Tuple是.NET早期就存在的引用类型,通过静态方法Create创建,元素用Item1、Item2这种方式访问。
using System;
class Program
{
static void Main()
{
// 创建一个包含字符串和整数的元组
Tuple<string, int> user = Tuple.Create("张三", 25);
Console.WriteLine("姓名: " + user.Item1);
Console.WriteLine("年龄: " + user.Item2);
}
}
值元组ValueTuple
从C# 7.0开始,值元组ValueTuple作为结构体出现,开销更小,而且可以用圆括号语法直接写。它仍是Item1、Item2的访问方式,但写法更短。
using System;
class Program
{
static void Main()
{
// 值元组直接赋值
(string, int) user = ("李四", 30);
Console.WriteLine(user.Item1);
Console.WriteLine(user.Item2);
}
}
命名元组
命名元组给元素起名字,调用时直接用名字,代码更清楚,也方便别人维护。
using System;
class Program
{
static void Main()
{
// 给元组元素命名
(string Name, int Age) user = (Name: "王五", Age: 28);
Console.WriteLine(user.Name);
Console.WriteLine(user.Age);
// 方法返回命名元组
var result = GetUser();
Console.WriteLine(result.Name);
}
static (string Name, int Age) GetUser()
{
return (Name: "赵六", Age: 22);
}
}
使用场景对比
| 类型 | 特点 | 适用情况 |
|---|---|---|
| Tuple | 引用类型,稍重 | 老项目兼容 |
| ValueTuple | 值类型,轻量 | 临时多返回值 |
| 命名元组 | 可读性好 | 团队开发清晰表达 |
小结
Tuple适合简单聚合数据。新代码推荐用ValueTuple和命名元组,既省事又容易懂。注意元组不适合复杂业务模型,那种情况还是该写正规类。
C#Tuplevalue_tuple修改时间:2026-07-29 17:06:23