我有一个接受Func的方法:
private void testFuncCallBack(Func<string> funcDelegate)
{
//Some Code
}
现在我想调用并传递一个func作为参数:
testFuncCallBack(() =>{"";});
现在我收到一条错误消息,指出并非所有代码路径都返回一个值。但是一旦我删除花括号和;
就行了。
为什么Func不能用Curly Braces编译。
同样适用于Action:
private void testActionCallBack(Action actionDelegate)
{
//Some Code
}
testActionCallBack(() => { int x = 10; });
答案 0 :(得分:0)
当我们在花括号内写东西时,它变成了一个陈述而不是一个表达式。
在这种情况下,当我们讨论lambda表达式时,表达式=&gt;“”将返回“”。但是如果我们想要发表一个声明,那么声明必须以return结束;
所以我们可以把它写成testFuncCallBack(() =>"")
;或testFuncCallBack(() =>{ return "";});
。在以后的情况下,如果它是一个声明,最好返回一些值。