私はC#の初心者です。構文、デリゲートの使用方法など、デリゲートの概念を理解することができました。しかし、 「デリゲートを使用する理由」についてはまだ混乱しています。最終的にメソッドを呼び出すために使用されたためです。なぜ私たちは代議員を選ぶのですか?
7 に答える
デリゲートは多くのことに使用されます。イベント ハンドラーの場合に最も一般的に使用されます。イベントを生成するコードは、イベントを処理するコードについて何も知る必要はありません。これは、サード パーティによって提供される場合があります。つまり、Microsoft はイベント起動コードを提供でき、それらのイベントを処理するメソッドを提供する必要があります。
デリゲートは、ある種の一般的なハンドラーを提供し、他のコードがそれに対して特定の処理を行う、このような状況で使用できます。
デリゲートを表示するもう 1 つの方法は、C# がCommand Patternを処理する方法です。メソッドを呼び出すためにそのパターンに関連付けられることが多いインターフェイスとクラスを宣言するのではなく、C# ではメソッドへの参照を直接渡すことができるため、C# でパターンを実装する方法が大幅に簡素化されます。
デリゲートは別の関数に送信でき、本質的に関数の一部を「カスタマイズ可能」にします。
//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);
簡単な例を想像することができます: エクスポート結果のアプリケーションには、以下のオプションがあります。 1. pdf にエクスポート 2. tp csv にエクスポート 3. txt にエクスポート
3 つのオプションはすべて異なるメソッドの実装を持ち、これらのメソッドはデータに対して何らかの処理を行います。
上記の 3 つがそれぞれ以下の 3 つのメソッドを呼び出すと仮定します。
ご覧のとおり、3 つすべてが同じメソッド シグネチャを持っています。将来的には、現時点ではわからない、さらに多くのタイプのエクスポートが存在する可能性があります。ここでは、特定のメソッドの代わりに、同じメソッド シグネチャを持つデリゲートを使用します。
これとは別に、EventHandler、BeginInvoke を使用した非同期メソッド呼び出しなど、デリゲートの他の使用法があります。