元组在C#中展开类似于Python

时间:2015-02-01 11:02:33

标签: c# tuples

在Python中,我们可以使用类似语法展开元组:

a, b = (1, 2)

C#中是否有类似的结构?或者访问以下元素:

Tuple<int, int> t = Tuple.Create(1, 2);
Console.Write(t.Item1);

唯一可能的方式?

1 个答案:

答案 0 :(得分:5)

元组解构(有时称为“爆炸”),即将其元素分布在多个变量上,并不是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#6的计划功能中删除,或至少受到限制;因此,我上面提出的建议将不再适用。