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中間呼び出しの代わりに、メソッドのようにアクションを実行できるのは素晴らしいことです。

InvokeBeginInvoke非同期呼び出しに対応するものがあります。

于 2012-04-24T10:18:09.337 に答える