我有一个问题的例子。
基本上,我需要将一个方法传递给另一个包含参数的方法。
public void test() {
var test = Add(Domath(5, 5)); // should be 10
}
public int Domath (int a, int b) {
return a + b;
}
public int Add (Func<int, int, int> math){
return math();
}
这样不行,我不知道为什么。这只是一个极简主义的例子。有办法让它发挥作用吗?
让我们看看
public int Add (Func<int, int, int> math){
return math();
}
不能返回return math();
:注意,math
需要两个参数,而这两个参数未传递给math()
。您可以将Add
修改为
public int Domath (int a, int b){
return a + b;
}
// We are going to add first and second
// with a help of math function
public int Add (int first, int second, Func<int, int, int> math = null) {
// If math is not provided, we use Domath functon
if (math == null)
math = Domath;
// Finally, we call math with required two arguments
return math(first, second);
}
现在你可以把
public void test(){
var test = Add(5, 5);
}
或
public void test(){
var test = Add(5, 5, Domath);
}