为什么不能在Func中直接用参数调用功能?

时间:2020-04-12 18:43:25

标签: c# func

我只是对var id = "myInput" + 0; var text = $("#"+id).closest('tr').find('td.myClass').text(); alert(text) Func代表有疑问。

我只是想知道为什么您不能直接这样做:

Action

但是您必须这样做:

public static int addTowNumber(int a, int b)
{
    return a + b;
}

Func<int, int, int> add = addTowNumber(1,2);

1 个答案:

答案 0 :(得分:3)

通过传递参数,您实际上是在调用方法,并返回int

要存储对函数的引用(稍后调用),请不要传递参数,这就是正确的原因:

Func<int, int, int> add = addTowNumber;

然后您可以在调用时提供所需的任何参数:

int result1 = add(1, 2);
int result2 = add(3, 4);

如果要推迟执行带有预定义参数的方法(这是您要尝试执行的操作),则需要创建一个如下所示的闭包:

Func<int> add = () => addTowNumber(1, 2);
int result = add();
相关问题