为什么我在Func Delegate上得到“并非所有代码路径返回值错误”

时间:2013-07-12 14:33:15

标签: c#-4.0 lambda action func

我有一个接受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; });

1 个答案:

答案 0 :(得分:0)

当我们在花括号内写东西时,它变成了一个陈述而不是一个表达式。

在这种情况下,当我们讨论lambda表达式时,表达式=&gt;“”将返回“”。但是如果我们想要发表一个声明,那么声明必须以return结束;

所以我们可以把它写成testFuncCallBack(() =>"");或testFuncCallBack(() =>{ return "";});。在以后的情况下,如果它是一个声明,最好返回一些值。