1

我有一个接受 Func 的方法:

private void testFuncCallBack(Func<string> funcDelegate)
        {
           //Some Code
        }

现在我想调用并传递一个函数作为参数:

  testFuncCallBack(() =>{"";});

现在我收到一条错误消息,指出并非所有代码路径都返回一个值。但是只要我取下花括号,;它就可以正常工作。

为什么 Func 不使用花括号进行编译。

不过,Action 也同样适用:

private void testActionCallBack(Action actionDelegate)
        {
            //Some Code
        }
 testActionCallBack(() => { int x = 10; });
4

1 回答 1

0

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

在这种情况下,当我们谈论 lambda 表达式时,表达式 =>"" 将返回 ""。但是如果我们想要做一个语句,那么这个语句必须用return来完成;

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

于 2013-08-14T05:12:00.073 回答