你可以内联命名C#7元组项目吗?

Gig*_*igi 3 c# tuples c#-7.0

默认情况下,使用C#7元组时,该项目将命名为喜欢的Item1,Item2等.

我知道你可以命名由方法返回的元组项.但是,您可以使用相同的内联代码,例如在以下示例中吗?

foreach (var item in list1.Zip(list2, (a, b) => (a, b)))
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

foreach我的身体中,我希望能够使用比和更好的东西访问最后的元组(包含ab).Item1Item2

Pan*_*vos 13

是的,你可以通过解构元组:

foreach (var (boo,foo) in list1.Zip(list2, (a, b) => (a, b)))
{
    //...
    Console.WriteLine($"{boo} {foo}");
}
Run Code Online (Sandbox Code Playgroud)

要么

foreach (var item in list1.Zip(list2, (a, b) => (a, b)))
{
    //...
    var (boo,foo)=item;
    Console.WriteLine($"{boo} {foo}");
}
Run Code Online (Sandbox Code Playgroud)

即使您在声明元组时命名了字段,也需要使用解构语法将它们作为变量访问:

foreach (var (boo,foo) in list1.Zip(list2, (a, b) => (boo:a, foo:b)))
{
    Console.WriteLine($"{boo} {foo}");
}
Run Code Online (Sandbox Code Playgroud)

如果要在不解构元组的情况下按名称访问字段,则必须在创建元组时为其命名:

foreach (var item in list1.Zip(list2, (a, b) => (boo:a, foo:b)))
{
    Console.WriteLine($"{item.boo} {item.foo}");
}
Run Code Online (Sandbox Code Playgroud)