C# 中的 ValueTuple 结构体

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

在 C# 领域,语言特性和功能的演进一直非常出色,而ValueTuple 结构就是这样一种显著丰富语言表达能力的增强功能。ValueTuple 结构出现于 C# 7.0,它提供了一种轻量级的机制,用于将多个值合并到一个单一的结构中,为传统的类或元组(tuple)提供了一种方便的替代方案。在这篇博文中,我们将深入探讨使用 ValueTuple 结构的语法、代码和实际示例,以更深入地了解其潜力和优势。

在深入研究实际示例之前,让我们先来剖析一下 ValueTuple 结构的基本语法。ValueTuple 可以声明为带命名元素或不带命名元素。以下是这两种情况的基本语法:

不带命名元素

带命名元素

在带命名元素的情况下,每个元素都使用冒号 (:) 语法分配一个名称。这可以显著提高代码的可读性,并在访问元组值时使其更加清晰。现在,让我们深入研究代码示例,以阐明 ValueTuple 在不同场景中的应用。

示例 1:基础 ValueTuple

输出

Item1: 42, Item2: Hello, Item3: 3.14
Name: John, Age: 25, IsStudent: False

说明

  • 元组初始化:提供的代码初始化了两个元组,每个元组都有不同的用途。第一个元组,称为 unnamedTuple,封装了一个整数 (42)、一个字符串 ("Hello") 和一个浮点数 (3.14)。另一方面,第二个元组,表示为 namedTuple,采用了更结构化的方法,通过包含诸如 "Name""Age""IsStudent" 等命名元素,每个元素都与特定值相关联。
  • 元素检索:代码演示了从两个元组中检索元素。对于 unnamedTuple,它使用 ItemX 属性(例如 Item1, Item2)来访问并使用 WriteLine 方法显示值。相比之下,namedTuple 利用命名属性(例如 Name, Age)来实现更清晰的方法。这种对命名元素的策略性使用增强了代码的清晰度,尤其是在涉及具有多个值的元组的场景中。
  • 增强清晰度:该代码通过在第二个元组中加入命名元素,提高了代码的清晰度。这种做法有助于更直接地理解每个元素的预期用途,特别是在元组包含不同值的情况下。
  • 输出显示:最终的控制台输出作为一个可视化表示,展示了两个元组中元素的值。这个演示阐明了从元组中提取和呈现单个元素的过程,无论它们是使用命名元素还是非命名元素。

示例 2:从方法返回多个值

输出

Min: 1, Max: 9

说明

  • 方法目标: GetMinMax 方法的主要目标是确定给定整数数组中的最小值和最大值。
  • 输入验证:该方法的一个关键方面是检查输入数组的有效性。如果数组为 null 或为空,它会抛出一个 ArgumentException
  • 变量初始化:该方法初始化两个变量,即 minmax,从提供的整数数组的第一个元素开始。
  • 迭代过程:通过遍历数组,该方法根据与每个元素的比较不断更新 minmax 变量。
  • 元组结果:该方法最后返回一个包含计算出的最小值和最大值的元组。
  • Main 方法执行:Main 方法中,定义了一个整数数组,并调用 GetMinMax 方法执行。
  • 解构操作:将元组结果解构为单独的 minmax 变量以增强可读性。
  • 输出显示:控制台有效地在 WriteLine 上呈现了最小值和最大值。