📜  C#|元组(1)

📅  最后修改于: 2023-12-03 15:14:28.348000             🧑  作者: Mango

C# 元组

C# 元组是用于存储多个相关值的结构。它可以作为单个实体返回多个值,而不需要创建一个复杂的类或结构体。元组普遍用于将多个返回值组合在一起,或者在不需要创建一个新的命名类型时,仍需要 OOP 的某些功能。本文将介绍 C# 元组的使用和示例。

声明和初始化一个元组

元组可以使用以下两个方法声明和初始化:

1. 使用 Tuple 类
Tuple<int, string, char> tupleExample = new Tuple<int, string, char>(42, "Hello, world!", 'A');
2. 使用语言支持的简写
var tupleExample = (42, "Hello, world!", 'A');

这两个方法都可以用于创建一个三个元素的元组,第一个元素是整数 42,第二个元素是字符串 "Hello, world!",第三个元素是字符 A。

访问元组中的元素

元组的元素可以通过以下示例中所示的两种方式进行读取:

Console.WriteLine(tupleExample.Item1); // 42
Console.WriteLine(tupleExample.Item2); // "Hello, world!"
Console.WriteLine(tupleExample.Item3); // 'A'

或者使用解构:

var (intVal, strVal, charVal) = tupleExample;
Console.WriteLine(intVal);   // 42
Console.WriteLine(strVal);   // "Hello, world!"
Console.WriteLine(charVal);  // 'A'

这两种方法效果相同,只是读取元素的语法不同。

构造元组

元组可以根据其元素类型创建一个空的元组,然后根据需要添加元素。我们可以使用以下两种方法创建元组:

1. 使用 Tuple.Create 方法
var tupleExample = Tuple.Create<int, string, char>(0, null, 'B');
tupleExample.Item1 = 42;
tupleExample.Item2 = "Hello, world!";
tupleExample.Item3 = 'A';
2. 使用语言支持的短语法
var tupleExample = (0, (string)null, 'B');
tupleExample.Item1 = 42;
tupleExample.Item2 = "Hello, world!";
tupleExample.Item3 = 'A';

这两种方法都创建了一个空的三个元素的元组。你可以按照元素的顺序分别设置每个元素。如果某个元素的类型为引用类型,则可以将其设置为 null

使用元组作为方法的参数和返回值

元组可以非常方便地用作方法的参数和返回值,例如:

public static (int, string) GetValueTuple(int input)
{
    return (input + 1, "Success");
}

我们可以使用以下方法访问返回元组的每个元素:

var result = GetValueTuple(42);
Console.WriteLine(result.Item1);  // 43
Console.WriteLine(result.Item2);  // "Success"

或者我们使用语言支持的解构方法:

var (intVal, strVal) = GetValueTuple(42);
Console.WriteLine(intVal);       // 43
Console.WriteLine(strVal);       // "Success"
元素命名

元组可以用元素名称声明和初始化。具有命名元素的元组称为 “命名元组”:

var namedTupleExample = (num: 42, message: "Hello, world!", letter: 'A');

在命名元组中,每个元素都有一个名称。使用以下代码读取命名元组中的元素:

Console.WriteLine(namedTupleExample.num);       // 42
Console.WriteLine(namedTupleExample.message);   // "Hello, world!"
Console.WriteLine(namedTupleExample.letter);    // 'A'

还可以使用解构来读取元素:

var (num, message, letter) = namedTupleExample;
Console.WriteLine(num);        // 42
Console.WriteLine(message);    // "Hello, world!"
Console.WriteLine(letter);     // 'A'
总结

C# 元组可以作为存储多个相关值的结构。它们可以用于将多个返回值组合在一起,或者在不需要创建一个新的命名类型时,使用 OOP 的某些功能。元组也可以用作方法的参数和返回值。元组需要在运行时保持不可变性,以确保值的正确性。