2012-04-24 113 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

相關問題