0

私はライブラリでラムダをかなり使用しています。私を本当に苛立たせているのは、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ステートメント、「引数」の前後の括弧、および中括弧ではありません。

ラムダにこの種の構文を含めることができないのはなぜですか?returnステートメントを削除すると、すべてのコードパスが値を返すわけではないというエラーが発生します。

4

1 に答える 1

10

試す: MyFunc("foobar", (x, y) => new Xyz());

于 2012-10-14T22:27:47.773 に答える