我四处寻找这个问题的答案,但找不到任何相关的东西。Action.Invoke()
使用时我学会了使用Action
,但你真的需要使用.Invoke
吗?
说我有这个动作:
Action<int> action = x =>
{
Console.WriteLine(x + 1);
};
我是否使用:
action.Invoke(2);
或者
action(2);
有什么不同?
谢谢
一样的东西,action(2);
基本上都是调用action.Invoke(2);
编译器转换action(2)
成action.Invoke(2);
来自 Jon Skeet的帖子:
就我个人而言,我通常使用快捷方式,但只是偶尔显式调用 Invoke 会更易读。例如,您可能有:
if (callAsync)
{
var result = foo.BeginInvoke(...);
// ...
}
else
{
foo.Invoke(...);
// ...
}
后者纯粹是前者的语法糖——没有区别(两者也是同步的)。
能够像方法而不是中间Invoke
调用一样运行操作是很好的。
Invoke
有一个BeginInvoke
异步调用的对应物。