2

我四处寻找这个问题的答案,但找不到任何相关的东西。Action.Invoke()使用时我学会了使用Action,但你真的需要使用.Invoke吗?

说我有这个动作:

Action<int> action = x =>
{
    Console.WriteLine(x + 1);
};

我是否使用:

action.Invoke(2);

或者

action(2);

有什么不同?

谢谢

4

2 回答 2

5

一样的东西,action(2);基本上都是调用action.Invoke(2);
编译器转换action(2)action.Invoke(2);

来自 Jon Skeet的帖子:

就我个人而言,我通常使用快捷方式,但只是偶尔显式调用 Invoke 会更易读。例如,您可能有:

if (callAsync)
{
    var result = foo.BeginInvoke(...);
    // ...
}
else
{
    foo.Invoke(...);
    // ...
}
于 2012-04-24T10:18:51.333 回答
3

后者纯粹是前者的语法糖——没有区别(两者也是同步的)。

能够像方法而不是中间Invoke调用一样运行操作是很好的。

Invoke有一个BeginInvoke异步调用的对应物。

于 2012-04-24T10:18:09.337 回答