ValueTuple 是 C# 7.0 引入的轻量级值类型元组,本质为栈分配的 struct,具备命名、解构、结构相等和零 GC 开销等特性,适用于临时数据组合与多返回值场景。
ValueTuple 是 C# 7.0 引入的轻量级值类型元组,本质是一个结构体(
struct),直接在栈上分配内存,不触发垃圾回收。它不是语法糖,而是编译器深度支持的底层类型,用于高效聚合多个值,尤其适合临时数据组合、多返回值、LINQ 投影等场景。
相比早期的 System.Tuple(引用类型,堆分配、不可命名、字段只能叫 Item1/Item2),ValueTuple 具备以下轻量特征:
(int, string) 在 64 位平台通常占 16 字节
Rest 字段中)ValueTuple 支持显式字段命名,编译后仍保持值语义:
var person = (Name: "Alice", Age: 30); → 可直接写 person.Name
var (name, age) = person;,变量名即语义(string Name, int Age) 和 (string, int) 编译后都是 ValueTuple
作为值类型,ValueTuple 的行为符合直觉:
== 和 .Equals() 均可用)string 默认按内容比较)default)ValueTuple 是“临时数据容器”,不是长期数据契约:
基本上就这些。它不复杂,但容易忽略栈分配和值语义带来的实际影响。