System.ValueTuple 与 System.Tuple
有什么区别?
System.ValueTuple ValueTuple 和 System.Tuple 是可用于在 C# 中表示元组的两种类型。但是,它们之间有几个关键区别。
主要区别
Feature | ValueTuple | Tuple |
---|---|---|
Value type | Yes | No |
Mutability | Mutable | Immutable |
Item access | Fields | Properties |
Syntax sugar | Supports deconstruction and named arguments | Does not |
Performance | Allocation-free on the stack | Requires heap allocation |
ValueTuple
ValueTuple 是一个值type(struct),这意味着它是在堆栈上分配的,不需要垃圾回收。它是一个可变结构,因此它的值在创建后可以更改。 ValueTuple 通过字段而不是属性公开其项目。
Tuple
Tuple 是引用类型(类),这意味着它在堆上分配,需要垃圾回收。它是一个不可变类,因此它的值在创建后就无法更改。 Tuple 通过属性公开其项目。
为什么使用 ValueTuple?
使用 ValueTuple 比使用 Tuple 有几个优点:
示例
使用 ValueTuple语法:
public (int sum, int count) DoStuff(IEnumerable<int> values) { var result = (sum: 0, count: 0); foreach (var value in values) { result.sum += value; result.count++; } return result; }
使用解构:
var (sum, count) = DoStuff(Enumerable.Range(0, 10)); Console.WriteLine($"Sum: {sum}, Count: {count}");
以上是C# 中的 ValueTuple 与 Tuple:主要区别是什么以及何时应该使用它们?的详细内容。更多信息请关注PHP中文网其他相关文章!