This question already has answers here:
Possible to initialize multiple variables from a tuple?

(7 个回答)


6年前关闭。




在 Python 中,我们可以用类似的语法展开一个元组:
a, b = (1, 2)

C#中是否有类似的结构?或访问元素,如:
Tuple<int, int> t = Tuple.Create(1, 2);
Console.Write(t.Item1);

唯一可能的方法?

最佳答案

C# 语言不直接支持元组解构(有时称为“爆炸”),即将其元素分布在多个变量上。

您可以编写自己的扩展方法:

static void ExplodeInto<TA,TB>(this Tuple<TA,TB> tuple, out TA a, out TB b)
{
    a = tuple.Item1;
    b = tuple.Item2;
}

var tuple = Tuple.Create(1, 2);
int a, b;
tuple.ExplodeInto(out a, out b);

上面的示例仅适用于成对(即具有两个项目的元组)。您需要为每个 Tuple<> 大小/类型编写一个这样的扩展方法。

在即将发布的 C# 语言版本中,您可能能够在表达式中声明变量。这可能使您能够将上面的最后两行代码组合到 tuple.ExplodeInto(out int a, out int b); 中。

关于c# - 元组在 C# 中展开类似于 Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28261964/

10-17 00:13