イベントとコールバックEvents and Callbacks

コールバックは、機能拡張ポイントがデリゲートからのユーザー コードにコールバックするためのフレームワークです。Callbacks are extensibility points that allow a framework to call back into user code through a delegate. これらのデリゲートは、メソッドのパラメーターでは、通常、フレームワークに渡されます。These delegates are usually passed to the framework through a parameter of a method.

イベントは、コールバックのデリゲート (イベント ハンドラー) を提供するための便利で一貫した構文をサポートする特殊なケースです。Events are a special case of callbacks that supports convenient and consistent syntax for supplying the delegate (an event handler). さらに、Visual Studio のステートメント入力候補およびデザイナーは、イベント ベースの Api を使用してヘルプを提供します。In addition, Visual Studio’s statement completion and designers provide help in using event-based APIs. (を参照してくださいイベント デザイン)。(See Event Design.)

✓ CONSIDER コールバックを使用して、フレームワークによって実行されるカスタム コードを提供できるようにします。✓ CONSIDER using callbacks to allow users to provide custom code to be executed by the framework.

✓ CONSIDER イベントを使用したオブジェクト指向設計を理解することがなくてもフレームワークの動作をカスタマイズできるようにします。✓ CONSIDER using events to allow users to customize the behavior of a framework without the need for understanding object-oriented design.

✓ DO 幅広い開発者になじみのあるは、ステートメント入力候補の Visual Studio と統合されたために、イベントを単純なコールバックよりも優先されます。✓ DO prefer events over plain callbacks, because they are more familiar to a broader range of developers and are integrated with Visual Studio statement completion.

X AVOID パフォーマンス重視の Api でのコールバックを使用します。X AVOID using callbacks in performance-sensitive APIs.

✓ DO 新しいFunc<...>Action<...>、またはExpression<...>コールバックで Api を定義するときに、カスタム デリゲートではなく型です。✓ DO use the new Func<...>, Action<...>, or Expression<...> types instead of custom delegates, when defining APIs with callbacks.

Func<...> Action<...>汎用デリゲートを表します。Func<...> and Action<...> represent generic delegates. Expression<...> コンパイルと、その後もできますが、実行時に呼び出されることができます関数定義を表すシリアル化およびリモート プロセスに渡されます。Expression<...> represents function definitions that can be compiled and subsequently invoked at runtime but can also be serialized and passed to remote processes.

✓ DO を測定しを使用するパフォーマンスの影響について理解するExpression<...>、使用する代わりにFunc<...>Action<...>デリゲート。✓ DO measure and understand performance implications of using Expression<...>, instead of using Func<...> and Action<...> delegates.

Expression<...> ほとんどの場合と論理的に等価では型がFunc<...>Action<...>デリゲート。Expression<...> types are in most cases logically equivalent to Func<...> and Action<...> delegates. 主な違いは、デリゲートはローカル プロセスのシナリオで使用するものであります。式は、有益なリモート プロセスまたはマシンで式を評価することである場合を対象としています。The main difference between them is that the delegates are intended to be used in local process scenarios; expressions are intended for cases where it’s beneficial and possible to evaluate the expression in a remote process or machine.

✓ DO するデリゲートを呼び出すことによって実行している任意のコードを理解し、セキュリティ、正確性、および互換性への影響を与える可能性です。✓ DO understand that by calling a delegate, you are executing arbitrary code and that could have security, correctness, and compatibility repercussions.

Portions © 2005, 2009 Microsoft Corporation.All rights reserved.Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

Pearson Education, Inc. からのアクセス許可によって了承を得て転載Framework デザイン ガイドライン。規則、手法、および再利用可能な .NET ライブラリの第 2 版のパターンKrzysztof Cwalina、Brad 内容では、Microsoft Windows の開発シリーズの一部として、Addison-wesley Professional、2008 年 10 月 22日を公開します。Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

関連項目See also