'Can not use Func with parameters

I have an example for my problem.

Basically i need to pass a method to another method with parameters included.

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();
}

It does not work this way and i don‘t know why. This is just a minimalistic example. Is there a way to get this working?



Solution 1:[1]

Let's have a look at

public int Add (Func<int, int, int> math){
    return math();
}

You can't return return math();: note, that math requires two arguments which are not passed to math(). You can modify Add as

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);
}  

Now you can put

public void test(){
    var test = Add(5, 5);
}

Or

public void test(){
    var test = Add(5, 5, Domath);
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Dmitry Bychenko