2012-04-24 112 views
2

我四处寻找答案,但找不到任何相关的东西。在使用Action时,我学会了使用Action.Invoke(),但实际上您是否需要使用.Invoke您是否需要使用Invoke on Action?

说我有这样的动作:

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

难道我用:

action.Invoke(2); 

action(2); 

有什么区别?

感谢

回答

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(...); 
    // ... 
} 
3

后者纯粹是因为以前的语法糖 - 没有任何区别(两者也是同步的)。

很高兴能够像一种方法而不是中介Invoke调用运行的行动。对于异步调用,有BeginInvoke

相关问题