[英]Why can't you invoke the fuction directly with the parameters with Func?
我只是有一个关于Func
和Action
代表的问题。
我只是想知道为什么你不能直接这样做:
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);
通过传递 arguments 您实际上是在调用该方法,并返回一个int
。
要存储对 function 的引用(稍后调用),您不需要传递 arguments,这就是正确的原因:
Func<int, int, int> add = addTowNumber;
然后,您可以在调用时提供您喜欢的任何 arguments:
int result1 = add(1, 2);
int result2 = add(3, 4);
如果您想延迟执行具有预定义 arguments 的方法,这就是您正在尝试做的事情,您需要创建一个像这样的闭包:
Func<int> add = () => addTowNumber(1, 2);
int result = add();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.