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

C#中的元组展开类似于Python,c#,tuples,C#,Tuples,在Python中,我们可以使用类似的语法展开元组: a, b = (1, 2) C#中是否有类似的结构?或访问以下元素: Tuple<int, int> t = Tuple.Create(1, 2); Console.Write(t.Item1); Tuple t=Tuple.Create(1,2); 控制台写入(t.Item1); C语言不直接支持唯一可能的方法?元组分解(有时称为“爆炸”),即将其元素分布在多个变量上 您可以编写自己的扩展方法: static void Ex

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

a, b = (1, 2)
C#中是否有类似的结构?或访问以下元素:

Tuple<int, int> t = Tuple.Create(1, 2);
Console.Write(t.Item1);
Tuple t=Tuple.Create(1,2);
控制台写入(t.Item1);
C语言不直接支持唯一可能的方法?

元组分解(有时称为“爆炸”),即将其元素分布在多个变量上

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

static void ExplodeInto(这个元组元组,out TA a,out TB b)
{
a=tuple.Item1;
b=tuple.Item2;
}
var tuple=tuple.Create(1,2);
INTA,b;
元组分解为(出a,出b);
上面的示例仅适用于成对(即具有两个项的元组)。您需要为每个
Tuple
size/type编写一个这样的扩展方法

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

更正:声明表达式显然已从C#6的计划功能中删除,或至少受到限制;因此,我上面的建议将不再有效


*不相关,但斯威夫特也支持这一点。(也是ES6)PS,术语被称为destructuringIt将与
(1,2…n)
@RoyiNamir有问题:
(1,2,…,n)
是无效的C#语法。但是,如果您的意思是任何长度的元组:对于每个特定数量的元组项,您将需要一个扩展方法。也就是说,对于
Tuple
需要一个扩展方法,对于
Tuple
需要一个扩展方法,对于
Tuple
需要一个扩展方法,等等(这是.NET中的常见模式。也有几种Tuple类型;或者几种
Action
Func
类型)。当然,这不是有效的语法。我指的是可变长度:-)如果(1,2…n)
Tuple
的值太高,它就会有问题
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);