C# 中的 ValueTuple

2024 年 8 月 29 日 | 4 分钟阅读

ValueTuple 是 C# 7.0 中一个新结构,表示值类型 Tuple。它已包含在 .NET Framework 4.7 或更高版本中。它使我们能够保存一个包含多个可能相关或不相关的值的集合。它可以包含 0 到 8 个组件,以及各种类型的元素。重复项也可以存储在值元组中。

ValueTuple 的需求

在 C# 中,我们已经有用于存储多个值的 Tuples,但 Tuples 存在一些 ValueTuple 克服的限制。或者,ValueTuple 是 C# 中 Tuples 的增强版本。它克服了 Tuples 的以下缺点:

  • Tuple 是引用类型,而 ValueTuple 是值类型。
  • Tuple 缺乏命名约定,但 ValueTuple 具有严格的命名标准。
  • Tuples 不允许我们创建零组件的元组,而 ValueTuple 允许我们创建零元素的元组。
  • 在性能方面,Tuple 优于 ValueTuple。ValueTuple 很有用,因为它提供了一种轻量级的方法来从现有方法返回多个值。此外,ValueTuple 的语法比 Tuples 的语法更优化。
  • ValueTuple 允许我们通过使用解构和 _ 关键字来额外访问值元组的元素。然而,Tuple 无法提供 _ 关键字和解构概念。
  • ValueTuple 中的 item1 和 item2 等组件是字段。然而,在 Tuple 中,它们包含属性。
  • ValueTuple 中的字段是可修改的。然而,Tuple 中的字段只能用于读取。

创建 ValueTuple

与 Tuple 不同,ValueTuples 提供了一种简单的创建和初始化 ValueTuple 的方法。ValueTuples 可以通过三种方式创建:

1. 使用构造函数: 我们可以使用 ValueTuple<T> 结构构造函数生成 ValueTuple,其中我们可以保存编号为一到八的组件及其类型。

语法

它具有以下语法:

示例

让我们举一个例子来说明如何在 C# 中使用构造函数创建 ValueTuple。

输出

ValTpl1: 3456879
ValTpl2: C#, .Net, 5906
ValTpl3: 67, 64, 65, 32, 39, 37, 21, 96

2. 使用 Create 方法

当我们使用 ValueTuple<T> 结构的构造函数来构建值元组时,我们必须提供值元组中包含的每个元素的类型,这会使我们的代码复杂化。因此,C# 提供了另一个 ValueTuple 结构,它具有用于构建值元组对象的静态方法,而无需指定每个元素的类型。

语法

它具有以下语法:

示例

让我们举一个例子来说明如何在 C# 中使用 Create 方法创建 ValueTuple。

输出

Valtupl1s: ()
Valtupl2s: 15, 34, 44, 55
Valtupl3s: 39, Programming, j, f, j, 59.78, 431, java

3. 使用括号 ()

这是创建 ValueTuples 最基本的方法,项目插入在它们之间。组件以两种方式保存:

命名成员:ValueTuple 允许我们创建一个元组,其中每个组件都可以有自己的名称。因此,我们可以通过它们的名称访问该组件。它提高了我们程序代码的可访问性和回忆性。我们可以在左侧或右侧为成员分配名称,但不能同时在两侧分配。如果我们在两侧都命名,则左侧优先于右侧。如下所示:

示例 1

未命名成员:未命名成员 是 ValueTuples 中没有名称的成员。它们是新创建的,没有名称。

示例 2