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

Ear*_*rlz 0 .net c# linq lambda delegates

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

到目前为止它是如何工作的:

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

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

MyFunc("foobar", (x, y) => { return new Xyz();});
Run Code Online (Sandbox Code Playgroud)

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

ObjectList.Where(x=>x.Foo=="bar");
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,Linq语法的正面没有return声明,没有括号围绕"参数",也没有花括号.

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

Lew*_*rin 10

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

  • 我不记得为什么我一开始就使用花括号.我认为要求退货声明是他们的错?> (3认同)
  • 大括号包含一个语句块,因此需要返回.很高兴它工作:)考虑到你的惊人代表,我很害怕;) (2认同)