首页 > 后端开发 > C++ > C# 中的 ValueTuple 与 Tuple:主要区别是什么以及何时应该使用它们?

C# 中的 ValueTuple 与 Tuple:主要区别是什么以及何时应该使用它们?

Susan Sarandon
发布: 2024-12-30 14:58:10
原创
704 人浏览过

ValueTuple vs. Tuple in C#: What are the Key Differences and When Should You Use Each?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板