我在库中使用了相当多的 lambdas。真正让我恼火的一件事是我似乎无法摆脱 return 语句,而且我周围有相当多的样板类型代码。
到目前为止,它是这样工作的:
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
语句,“参数”周围没有括号,也没有大括号。
为什么我的 lambda 表达式中不能有这种语法?如果我删除 return 语句,我会收到关于并非所有代码路径都返回值的错误。