使用新的C#7元组语法,是否可以指定一个以元组为参数的lambda并在lambda中使用解压缩的值?
例:
var list = new List<(int,int)>();
在lambda中使用元组的正常方法:
list.Select(value => value.Item1*2 + value.Item2/2);
我希望避免使用新糖.Item1
.Item2
,例如:
list.Select((x,y) => x*2 + y/2);
最后一行不起作用,因为它被视为lambda的两个参数。我不确定是否真的有办法。
编辑:
我在lambda定义((x,y)) => ...
中尝试了双括号,但没有用:,也许尝试起来很愚蠢,但是双括号实际上在这里起作用:
list.Add((1,2));
另外,我的问题不是要避免使用丑陋的默认名称.Item .Item2
,而是要在lambda中实际拆开元组(以及为什么不能实现或不可能)。如果您是来这里使用默认名称的解决方案,请阅读Sergey Berezovskiy的答案。
编辑2:
只是想到了一个更通用的用例:是否有可能(或为什么不这样做)“解构”传递给方法的元组?像这样:
void Foo((int,int)(x,y)) { x+y; }
代替这个:
void Foo((int x,int y) value) { value.x+value.y }