探秘元组:不可修改的序列
在 C# 的类型系统中,元组(Tuple)是一种轻量级数据结构,用于临时存储多个不同类型的值。自.NET Framework 4.0
引入传统元组(System.Tuple
),到 C# 7.0 推出值元组(ValueTuple
),这一特性经历了从 “语法补充” 到 “核心数据类型” 的演进。本文将从.NET
源码和 CLR 底层实现入手,全面剖析元组的内存布局、类型系统特性、性能表现及最佳实践,帮助开发者理解元组的本质,在实际开发中做出最优选择。
一、元组的双重形态:从引用到值类型的演进
C# 元组存在两种截然不同的实现:传统的System.Tuple
(引用类型)和现代的System.ValueTuple
(值类型)。两者在设计目标、内存模型和使用场景上有本质区别。
1. 传统元组(System.Tuple
):引用类型的早期实现
System.Tuple
是.NET Framework 4.0
引入的引用类型元组,通过泛型参数支持 1-8 个元素(超过 8 个需嵌套Rest
属性):
// 创建传统元组(引用类型)