本文介绍了你能内联命名 C# 7 元组项目吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

默认情况下,当使用 C# 7 元组时,项目将命名为 Item1Item2 等.

By default, when using C# 7 tuples, the items will named like Item1, Item2, and so on.

我知道您可以命名方法返回的元组项.但是你能做同样的内联代码吗,比如下面的例子?

I know you can name tuple items being returned by a method. But can you do the same inline code, such as in the following example?

foreach (var item in list1.Zip(list2, (a, b) => (a, b)))
{
    // ...
}

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

In the body of the foreach, I would like to be able to access the tuple at the end (containing a and b) using something better than Item1 and Item2.

推荐答案

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

Yes, you can, by deconstructing the tuple:

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

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

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

Even if you named the fields when declaring the tuple, you'd need the deconstruction syntax to access them as variables:

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

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

If you want to access the fields by name without deconstructing the tuple, you'll have to name them when the tuple is created:

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

这篇关于你能内联命名 C# 7 元组项目吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 10:40