你需要使用Invoke on Action吗?

时间:2012-04-24 10:17:10

标签: c# action

我正在寻找答案,但找不到任何相关内容。我在使用Action.Invoke()时学会了使用Action,但您确实需要使用.Invoke吗?

说我有这个动作:

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

我是否使用:

action.Invoke(2);

action(2);

有什么区别?

由于

2 个答案:

答案 0 :(得分:5)

同样的事情,action(2);基本上会调用action.Invoke(2);
编译器将action(2)转换为action.Invoke(2);

来自post from Jon Skeet

  

我个人通常使用快捷方式,但偶尔也会这样   最终显式调用Invoke更具可读性。例如,   你可能有:

if (callAsync)
{
    var result = foo.BeginInvoke(...);
    // ...
}
else
{
    foo.Invoke(...);
    // ...
}

答案 1 :(得分:3)

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

很高兴能够像方法一样运行动作而不是中间Invoke调用。

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