如何为方法提供func,所以我可以编写如下内容:
MethodTest(a => a.IsAltTagAvailable);
此方法的签名采用func,当条件满足时(基本上只是谓词)返回一个对象(比如说HtmlImage)。
编辑:我需要将我将要处理的类型作为T(参数)传递。我忘了这么做,多么笨拙!
由于
答案 0 :(得分:3)
谓词往往会返回bool
,而不是对象。当条件不满足时你会回来什么?举个例子,你并不是指函数返回一个对象 - 你的意思是接受一个对象并返回一个bool
。
注意,如果你要在lambda表达式中有一个参数,你需要使用一个带参数的委托。
在给出明确答案之前,我们确实需要更多信息,但您可能需要以下内容:
void MethodTest(Func<HtmlImage, bool> predicate)
或
void MethodTest(Predicate<HtmlImage> predicate)
(我个人喜欢使用命名委托的描述性质,但其他人更喜欢使用Func
/ Action
来处理几乎所有事情。)
假设输入类型是固定的。如果没有,您可能希望将其作为通用方法:
void MethodTest<T>(Predicate<T> predicate)
答案 1 :(得分:1)
void MethodTest(Func<HtmlImage> func) {
}
答案 2 :(得分:1)
public void MethodTest(Func<HtmlImage> delegate)
{
//do what you want
}
OR:
public delegate HtmlImageTagHandler(HtmlImage image);
public HtmlImage MethodTest(HtmlImageTagHandler handler, HtmlImage image)
{
return handler(image) == true ? image : null;
}
使用:
MethodTest(a => a.IsAltTagAvailable, a);
答案 3 :(得分:1)
void MethodTest(Func<HtmlImage, object> func)
{
}
HtmlImage
是函数的参数(x
),object
返回值,如果要指定它,可以采用具体类型。
void MethodTest(Func<HtmlImage, bool> func)
这是一个谓词:
void MethodTest(Predicate<HtmlImage> func)
要使其完全通用,请将HtmlImage替换为通用参数:
void MethodTest<T>(Predicate<T> func)