我四处寻找答案,但找不到任何相关的东西。在使用Action
时,我学会了使用Action.Invoke()
,但实际上您是否需要使用.Invoke
?您是否需要使用Invoke on Action?
说我有这样的动作:
Action<int> action = x =>
{
Console.WriteLine(x + 1);
};
难道我用:
action.Invoke(2);
或
action(2);
有什么区别?
感谢
我四处寻找答案,但找不到任何相关的东西。在使用Action
时,我学会了使用Action.Invoke()
,但实际上您是否需要使用.Invoke
?您是否需要使用Invoke on Action?
说我有这样的动作:
Action<int> action = x =>
{
Console.WriteLine(x + 1);
};
难道我用:
action.Invoke(2);
或
action(2);
有什么区别?
感谢
它同样的事情,action(2);
基本要求action.Invoke(2);
编译器转换action(2)
成action.Invoke(2);
个人而言,我通常使用的快捷方式的形式,但只是偶尔为之它 最终显示调用Invoke更具可读性。例如,您可能有: :
if (callAsync)
{
var result = foo.BeginInvoke(...);
// ...
}
else
{
foo.Invoke(...);
// ...
}
后者纯粹是因为以前的语法糖 - 没有任何区别(两者也是同步的)。
很高兴能够像一种方法而不是中介Invoke
调用运行的行动。对于异步调用,有BeginInvoke
。