2009-07-28 8 views
1

MSDNから読む: "デリゲートはメソッドを参照する型です。デリゲートにメソッドが割り当てられると、そのメソッドとまったく同じように動作します。""代理人"は型またはオブジェクトを意味しますか?

「委任」とは、タイプまたはオブジェクトを意味しますか?

...これは両方にすることはできません。単一の単語が2つの異なる意味で使用されているように思わ:

  1. 実際Aのように呼び出すことができるいくつかの指定された署名、
  2. その型のオブジェクトのメソッドへの参照を含むタイプ方法。

私はより正確な語彙が好きで、最初のケースでは "デリゲートタイプ"を使用します。私は最近、イベントやデリゲートについて多くのことを読んでいます。そのあいまいさが何度も私を混乱させていました。最初の意味でのMSDNの「代理人」という言葉の

いくつかの他の用途:

  • 「「イベントがイベント・データを生成した場合にのみ、カスタムイベントデリゲートが必要とされている」デリゲートの宣言は、そのクラスを定義しますクラスSystem.Delegateから派生している第2の意味でのMSDNでデリゲート 『言葉」

のいくつかの他の用途』:

  • "イベントの発生時に呼び出されるデリゲートを指定します。"
  • "デリゲートは、メソッドを参照するオブジェクトです。彼らは時々あなたはなぜ、マイクロソフトからの人々は、この曖昧さを紹介したのですか?どう思いますタイプセーフな 関数ポインタ」

として記述されている?私は別の概念は、同じ単語で参照されているとの概念的な問題を持っている唯一の人です。

答えて

9

テキストは単語delegate両方の方法を使用している;種類としてとタイプのインスタンスとして

それは言うべき「デリゲートタイプは方法を参照するタイプです。 、デリゲート型署名、ない特定方法指す

+0

+1。 –

+0

C#の 'delegate'キーワードはあいまいであることに注意してください。' delegate xyz Xyz() 'はデリゲート*型*を表し、' delegate(){...} 'はデリゲート*インスタンス*を示します。 – Ruben

+0

@ルーベン私はパーティーに遅刻しますが、すべての型名/コンストラクター名のペアのこのあいまいさではありませんか? –

0

「。デリゲートインスタンスは、方法が割り当てられ、それは正確にその方法のように動作一度。デリゲートインスタンス月割り当てられている場合は、1つ以上のメソッド参照が含まれます。

したがってデリゲート型がある:

delegate void D(); 

デリゲートインスタンスである:

D d; 

デリゲートインスタンスの割り当てがあってもよい。

素敵行わ01​​
d += new D (Method); 
関連する問題