C# 中的ValueTuple是什么 - 轻量级的元组类型

admin 百科 15
ValueTuple 是 C# 7.0 引入的轻量级值类型元组,本质为栈分配的 struct,具备命名、解构、结构相等和零 GC 开销等特性,适用于临时数据组合与多返回值场景。

C# 中的ValueTuple是什么 - 轻量级的元组类型-第1张图片-佛山资讯网

ValueTuple 是 C# 7.0 引入的轻量级值类型元组,本质是一个结构体(struct),直接在栈上分配内存,不触发垃圾回收。它不是语法糖,而是编译器深度支持的底层类型,用于高效聚合多个值,尤其适合临时数据组合、多返回值、LINQ 投影等场景。

为什么叫“轻量级”?

相比早期的 System.Tuple(引用类型,堆分配、不可命名、字段只能叫 Item1/Item2),ValueTuple 具备以下轻量特征:

  • 所有字段公开且内联存储,无对象头、无虚方法表
  • 内存占用 = 各字段大小之和(含对齐),例如 (int, string) 在 64 位平台通常占 16 字节
  • 创建、传递、比较全程避开 GC,高频调用时性能优势明显
  • 支持最多 8 个直接元素,超限时自动嵌套(如第 9 个元素放在 Rest 字段中)

命名与解构让代码真正可读

ValueTuple 支持显式字段命名,编译后仍保持值语义:

  • var person = (Name: "Alice", Age: 30); → 可直接写 person.Name
  • 支持解构赋值:var (name, age) = person;,变量名即语义
  • 命名不改变底层类型,(string Name, int Age)(string, int) 编译后都是 ValueTuple<string int></string>

值语义带来的天然行为

作为值类型,ValueTuple 的行为符合直觉:

标签: 字节 c# 内存占用 为什么

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~