0

私はC#の初心者です。構文、デリゲートの使用方法など、デリゲートの概念を理解することができました。しかし、 「デリゲートを使用する理由」についてはまだ混乱しています。最終的にメソッドを呼び出すために使用されたためです。なぜ私たちは代議員を選ぶのですか?

4

7 に答える 7

0

デリゲートは多くのことに使用されます。イベント ハンドラーの場合に最も一般的に使用されます。イベントを生成するコードは、イベントを処理するコードについて何も知る必要はありません。これは、サード パーティによって提供される場合があります。つまり、Microsoft はイベント起動コードを提供でき、それらのイベントを処理するメソッドを提供する必要があります。

デリゲートは、ある種の一般的なハンドラーを提供し、他のコードがそれに対して特定の処理を行う、このような状況で使用できます。

デリゲートを表示するもう 1 つの方法は、C# がCommand Patternを処理する方法です。メソッドを呼び出すためにそのパターンに関連付けられることが多いインターフェイスとクラスを宣言するのではなく、C# ではメソッドへの参照を直接渡すことができるため、C# でパターンを実装する方法が大幅に簡素化されます。

于 2013-11-04T10:05:07.257 に答える
0

デリゲートは別の関数に送信でき、本質的に関数の一部を「カスタマイズ可能」にします。

//both of these calls use the same function (Where) but with a different predicate delegate
var greaterThanZero = intList.Where(e => e > 0);
var lessThanZero = intList.Where(e => e < 0);
于 2013-11-04T10:08:50.313 に答える
0

簡単な例を想像することができます: エクスポート結果のアプリケーションには、以下のオプションがあります。 1. pdf にエクスポート 2. tp csv にエクスポート 3. txt にエクスポート

3 つのオプションはすべて異なるメソッドの実装を持ち、これらのメソッドはデータに対して何らかの処理を行います。

上記の 3 つがそれぞれ以下の 3 つのメソッドを呼び出すと仮定します。

ご覧のとおり、3 つすべてが同じメソッド シグネチャを持っています。将来的には、現時点ではわからない、さらに多くのタイプのエクスポートが存在する可能性があります。ここでは、特定のメソッドの代わりに、同じメソッド シグネチャを持つデリゲートを使用します。

これとは別に、EventHandler、BeginInvoke を使用した非同期メソッド呼び出しなど、デリゲートの他の使用法があります。

于 2013-11-04T10:15:01.497 に答える