推荐使用ValueTuple而非Tuple,因其是值类型、性能更优、支持命名字段和解构;声明简洁如("张三",28,true),可命名如(Name:"王五",Age:25),支持var(name,age)=t解构,.NET Core 2.0+原生支持。

在C#中,Tuple(引用类型,.NET Framework 4.0引入)和ValueTuple(值类型,C# 7.0+推荐使用)都用于快速封装多个不同类型的值,但它们在性能、语法和用法上有明显区别。现在基本只推荐用 ValueTuple,它更轻量、支持解构、可命名字段,且无需额外 NuGet 包(.NET Core 2.0+ / .NET 5+ 内置)。
可以直接用括号语法创建,比 Tuple.Create() 简洁得多:
var person = ("张三", 28, true); → 编译器推断为 (string, int, bool)
ValueTuple<string int bool> t = ("李四", 31, false);</string>
var user = (Name: "王五", Age: 25, IsActive: true);,之后可用 user.Name 访问不用再写 t.Item1、t.Item2,直接拆成变量:
var (name, age, active) = ("赵六", 29, true); → 自动按顺序赋值var (name, _, _) = user;(下划线忽略不需要的字段)var (code, msg) = GetResult();
适合替代 out 参数或小型 DTO:
public (int sum, int count, double avg) Calculate(int[] nums) { ... }
void Print((string title, int year) book) => Console.WriteLine($"{book.title} ({book.year})");
别混用,避免隐式转换问题:
Tuple<t1></t1> 是类(class),存在堆分配;(T1, T2) 是结构体(struct),栈上分配,无 GC 压力Tuple 字段固定叫 Item1、Item2;ValueTuple 支持自定义字段名(编译期有效)Tuple.Create(1, "a") 返回 Tuple<int></int>;而 (1, "a") 是 ValueTuple<int></int>,二者不兼容ValueTuple,无需额外引用基本上就这些。日常开发中,优先用 (type name, ...) 语法写 ValueTuple,配合解构和命名字段,代码更清晰、性能更好。旧项目若还在用 Tuple,建议逐步迁移到 ValueTuple。
以上就是C#怎么使用Tuple和ValueTuple C#元组类型使用方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号