为什么这个lambda函数需要括号?

return (Func<object, Task<object>>)(async (dynamic data) => { methodCall(data.data, data.more); return null; }); 

从我所收集的代码正在做的事情来看,它明确地将lambda函数作为一个委托来转换,然后返回这个委托(在这种情况下,它将返回一个edgejs函数)。

当parens被删除时,从构build过程中收到8个错误。

语法错误,','预计

; 预期

预计

名称async在当前上下文中不存在

dynamic名称在当前上下文中不存在

名称数据在当前上下文中不存在

名称数据在当前上下文中不存在

名称数据在当前上下文中不存在

可能是因为async是一个上下文关键字 ,只有在方法或lambda签名中作为修饰符出现时才具有特殊含义。 没有parens,parsing器认为async是一个方法的名字,导致一个错误,因为编译器找不到这个名字的一个方法(并且在=>上还有一个parsing错误,因为parsing器不再使用lambdaexpression式那点)。