我正在寻找答案,但找不到任何相关内容。我在使用Action.Invoke()
时学会了使用Action
,但您确实需要使用.Invoke
吗?
说我有这个动作:
Action<int> action = x =>
{
Console.WriteLine(x + 1);
};
我是否使用:
action.Invoke(2);
或
action(2);
有什么区别?
由于
答案 0 :(得分:5)
同样的事情,action(2);
基本上会调用action.Invoke(2);
编译器将action(2)
转换为action.Invoke(2);
我个人通常使用快捷方式,但偶尔也会这样 最终显式调用Invoke更具可读性。例如, 你可能有:
if (callAsync)
{
var result = foo.BeginInvoke(...);
// ...
}
else
{
foo.Invoke(...);
// ...
}
答案 1 :(得分:3)
后者纯粹是前者的语法糖 - 没有区别(两者都是同步的)。
很高兴能够像方法一样运行动作而不是中间Invoke
调用。
Invoke
有一个用于异步调用的对应BeginInvoke
。