你能命名 C# 7 Tuple 内联项吗? [英] Can you name C# 7 Tuple items inline?

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

问题描述

默认情况下,使用 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.

推荐答案

可以,通过解构元组:

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 Tuple 内联项吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆