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

时间:2017-02-01 17:43:26

标签: c# node.js lambda edgejs

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

从我收集的上面的代码开始,它显式地将lambda函数作为委托,然后返回该委托(在这种情况下,它返回到edgejs函数)。

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

  

语法错误,&#39;,&#39;预期

     

预期

     

}预期

     

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

     

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

     

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

     

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

     

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

1 个答案:

答案 0 :(得分:2)

可能,因为async is a contextual keyword在方法或lambda签名中作为修饰符出现时才具有特殊含义。没有parens,解析器认为async是方法名称,导致错误,因为编译器找不到具有该名称的方法(并且,=>上的解析错误,因为解析器是此时不再使用lambda表达式。)