📅  最后修改于: 2023-12-03 15:08:52.520000             🧑  作者: Mango
C#中的元组(Tuple)是一种数据结构,允许将多个元素放在一起。 元组可以包含不同类型的元素,可以具有命名和非命名属性。
在C# 7中,添加了ValueTuple,以便轻松创建2元组或成对元组。
下面是创建2元组或成对元组的几种方法:
var tuple1 = (1, "hello"); // 自动推断类型
ValueTuple<int, string> tuple2 = (1, "hello"); // 显式指定类型
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#的元组提供了一种对数据进行组织的简单且强大的方法。 无论是返回多个值还是临时组织一些值,元组都是一个非常有用的工具。