2010-11-16 49 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>