📜  如何在C#中创建2元组或成对元组?(1)

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

如何在C#中创建2元组或成对元组?

C#中的元组(Tuple)是一种数据结构,允许将多个元素放在一起。 元组可以包含不同类型的元素,可以具有命名和非命名属性。

在C# 7中,添加了ValueTuple,以便轻松创建2元组或成对元组。

下面是创建2元组或成对元组的几种方法:

方法一:使用ValueTuple
var tuple1 = (1, "hello"); // 自动推断类型
ValueTuple<int, string> tuple2 = (1, "hello"); // 显式指定类型
方法二:使用Tuple类
Tuple<int, string> tuple3 = Tuple.Create(1, "hello");
方法三:使用创建方法
var tuple4 = CreateTuple(1, "hello");
private static (int, string) CreateTuple(int value1, string value2)
{
    return (value1, value2);
}

无论使用哪种方法,都可以通过名称或索引来访问元组的组成部分。

Console.WriteLine(tuple1.Item1); // 1
Console.WriteLine(tuple1.Item2); // "hello"
Console.WriteLine(tuple1.Item3); // 编译错误,元组只有两个元素

Console.WriteLine(tuple2.Item1); // 1
Console.WriteLine(tuple2.Item2); // "hello"

Console.WriteLine(tuple3.Item1); // 1
Console.WriteLine(tuple3.Item2); // "hello"

Console.WriteLine(tuple4.Item1); // 1
Console.WriteLine(tuple4.Item2); // "hello"

使用元组的优点之一是避免了显式定义类或结构体类型。 如果您只需要临时组织一些值,元组可以提供一个更简单的解决方案。

元组还可以用作方法的返回值:

public static (int, string) GetTuple()
{
    return (1, "hello");
}

var myTuple = GetTuple();
Console.WriteLine(myTuple.Item1); // 1
Console.WriteLine(myTuple.Item2); // "hello"

同时,元组也可以使用命名元素来定义:

(int Value1, string Value2) namedTuple = (1, "hello");

通过使用命名元素,可以提高代码的可读性并使代码更易于理解。

此外,元组还提供了许多有用的方法。

例如,可以使用Equals方法比较两个元组:

var tuple1 = (1, "hello");
var tuple2 = (1, "hello");
var tuple3 = (2, "world");

Console.WriteLine(tuple1.Equals(tuple2)); // True
Console.WriteLine(tuple1.Equals(tuple3)); // False

可以将其解构为单独的变量:

var tuple1 = (1, "hello");
var (value1, value2) = tuple1;

Console.WriteLine(value1); // 1
Console.WriteLine(value2); // "hello"

总之,C#的元组提供了一种对数据进行组织的简单且强大的方法。 无论是返回多个值还是临时组织一些值,元组都是一个非常有用的工具。