【问题标题】:Surrounding a lambda expression parameter with parentheses用括号括住 lambda 表达式参数
【发布时间】:2014-08-22 10:30:22
【问题描述】:
我今天一直在关注这个tutorial 以了解一些有关 Web API 的知识并注意到一些东西 - 在教程代码中,有这样一行:
var product = products.FirstOrDefault((p) => p.Id == id);
如您所见,括号中提供了参数“p”。由于这种方式不是强制性的,我很好奇这样做是否有任何好处,或者这只是开发人员的偏好?
【问题讨论】:
标签:
c#
asp.net
.net
lambda
【解决方案1】:
在这种情况下,这纯粹是开发者的偏好。
当您有多个参数时,需要使用括号。例如:
var singleString = someStrings.Aggregate((current, next) => current + Environment.NewLine + next);
【解决方案2】:
C# 规范明确指出(p) => ... 可以写成p => ...:
7.15 匿名函数表达式
...
在具有单个隐式类型参数的匿名函数中,可以从参数列表中省略括号。换句话说,表单的匿名函数
( param ) => expr
可以简写为
param => expr
所以没有任何技术差异,只有个人喜好。