为什么不能使用 Func 的参数直接调用函数?



我有一个关于FuncAction委托的问题。

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

public static int addTowNumber(int a, int b)
{
return a + b;
}
Func<int, int, int> add = addTowNumber(1,2);

但你必须这样做:

Func<int, int, int> add = addTowNumber;
var addNumber = add(1, 2);
Console.WriteLine(addNumber);

通过传递参数,您实际上是在调用该方法,并返回一个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();

相关内容

最新更新