我在图书馆里使用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语句,我会收到一个错误,不是所有代码路径都返回一个值。
答案 0 :(得分:10)
尝试:MyFunc("foobar", (x, y) => new Xyz());