我有
的声明void Test (Func<bool> f)
我有像bool getItem(string id)
我可以像Test ( ()=>getItem("123"))
一样打电话,为什么?
我想我可以检查我需要1个字符串参数。
答案 0 :(得分:4)
因为Test的签名要求参数是一个不带参数的方法并返回一个布尔值。
答案 1 :(得分:4)
Func<bool>
需要一个返回bool
的函数。 Func<T1>
有一个输出参数,然后Func<T1, T2>
采用输入T1和输出T2的函数。每个连续版本都允许一个额外的输入参数,最终的泛型类型是输出参数的类型。
例如:Func<string, string, bool>
可以调用bool DoStuff(string s1, string s2)
快速编辑以澄清:测试(()=&gt; getItem(“123”))是有效的,因为lambda声明的开头没有公开输入参数,而getItem返回一个布尔值。
答案 2 :(得分:1)
您的方法测试被定义为采用Func<bool>
的参数,该参数需要类似于bool Something();
的方法签名
查看其他Func<>
选项,了解您要完成的匹配项。至少您正在查看Action<string>
或Func<bool, string>