为什么Linq lambdas不需要'return`声明,但我的呢?

时间:2012-10-14 22:23:48

标签: c# .net linq delegates lambda

我在图书馆里使用lambdas很多。真让我烦恼的一件事是我似乎无法摆脱返回声明,而且我周围有相当多的样板代码。

到目前为止它的工作原理如下:

public delegate IBarelyView HandlerInvoker(IDictionary<string, string> route, IDictionary<string, string> form);
public void MyFunc(string foo, HandlerInvoker invoker) { }

这是我有工作人员使用MyFunc的代码:

MyFunc("foobar", (x, y) => { return new Xyz();});

现在我知道这不是太糟糕了。但是,我真的希望能够使用Linq类型语法。例如,它很容易做到

ObjectList.Where(x=>x.Foo=="bar");

正如您所看到的,Linq语法的正面不是return语句,“参数”周围没有括号,也没有花括号。

为什么我的lambdas中不能有这种语法?如果我删除return语句,我会收到一个错误,不是所有代码路径都返回一个值。

1 个答案:

答案 0 :(得分:10)

尝试:MyFunc("foobar", (x, y) => new Xyz());