2010-11-16 56 views
0

我有Func鍵和lambda問題

void Test (Func<bool> f) 

聲明我有一個像bool getItem(string id)

的方法我可以調用諸如Test (()=>getItem("123")),爲什麼呢?

我想我可以檢查我需要1個字符串參數。

+0

你的問題是什麼? – LukeH 2010-11-16 02:38:32

回答

4

Func<bool>需要返回bool的函數。 Func<T1>有一個輸出參數,然後Func<T1, T2>採用輸入T1和輸出T2的函數。每個後續版本都允許使用額外的輸入參數,最終的泛型類型是輸出參數的類型。

例:Func<string, string, bool>就能夠調用bool DoStuff(string s1, string s2)

快速編輯澄清:測試(()=>的getItem(「123」))的作品,因爲你的拉姆達聲明的開頭不公開任何輸入參數, getItem返回一個布爾值。

4

因爲Test的簽名要求參數是一個不帶參數並返回布爾值的方法。

1

你的方法測試定義是指採取的Func<bool>一個參數,它預計在另一Func<>選項類似於bool Something();

查找方法簽名,看看哪些符合你想要完成的任務。至少你在看Action<string>Func<bool, string>