我四处寻找这个问题的答案,但找不到任何相关的东西。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异步调用的对应物。