1

MSDN からの読み取り:「デリゲートは、メソッドを参照する型です。デリゲートにメソッドが割り当てられると、そのメソッドとまったく同じように動作します。」

「デリゲート」は型またはオブジェクトを意味しますか?!

...両方はあり得ません。1 つの単語が 2 つの異なる意味で使用されているように私には思えます。

  1. 指定されたシグネチャのメソッドへの参照を含む型、
  2. メソッドのように実際に呼び出すことができる、そのタイプのオブジェクト。

私はより正確な語彙を好み、最初のケースには「デリゲート型」を使用します。私は最近、イベントとデリゲートについて多くのことを読んでいますが、その曖昧さに何度も混乱していました。

最初の意味でのMSDNの「デリゲート」という言葉の他の使用法:

  • 「カスタム イベント デリゲートは、イベントがイベント データを生成する場合にのみ必要です」
  • 「デリゲート宣言は、クラス System.Delegate から派生したクラスを定義します」

2番目の意味でのMSDNの「デリゲート」という言葉の他の使用法:

  • 「何らかのイベントの発生時に呼び出されるデリゲートを指定する」
  • 「デリゲートはメソッドを参照するオブジェクトです。タイプセーフな関数ポインタとして記述されることもあります」

どう思いますか?なぜマイクロソフトの人々はこのあいまいさを導入したのですか? 同じ言葉で異なる概念が参照されているという概念上の問題を抱えているのは私だけでしょうか。

4

2 に答える 2

9

テキストはこの単語をdelegate両方の方法で使用しています。タイプとして、およびタイプのインスタンスとして。

「デリゲートは、メソッドを参照する型です。デリゲートインスタンスにメソッドが割り当てられると、そのメソッドとまったく同じように動作します。」

于 2009-07-28T10:39:38.627 に答える
0

デリゲート型は、特定のメソッドではなく、署名を参照します。デリゲート インスタンスは、割り当てられている場合、1 つ以上のメソッド参照を含むことができます。

したがって、デリゲートのタイプは次のとおりです。

delegate void D();

デリゲート インスタンスは次のとおりです。

D d;

デリゲート インスタンスの割り当ては次のようになります。

d += new D (Method);
于 2010-06-18T09:40:35.587 に答える