2012-10-14 106 views
0

我在庫中使用lambdas頗多。有一件事讓我感到非常厭煩,我似乎無法擺脫返回聲明,並且在他們周圍有相當多的鍋爐板類型代碼。爲什麼Linq lambda不需要`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語句,我得到一個關於不是所有返回值的代碼路徑的錯誤。

回答

10

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

+0

我覺得啞巴。是的,這是有效的,是非常明顯的 – Earlz

+3

我不記得爲什麼我一開始就使用大括號。我認爲這是他們要求退貨聲明的錯誤?> – Earlz

+0

哈哈諷刺多少? –

相關問題