1

DelegateとEventHandlerの違いについて尋ねる次の質問を読みました。EventHandlerとdelegetevoid()の違い。私が今日の午後ここで読んだ他のいくつかの質問があります。

Delegateは関数へのポインターであり、マルチキャストであることを理解しています。私は、イベントハンドラーが「デリゲート」であることを読みました。私はそれがこの署名を持っていることに気づきました:

Public Delegate Sub EventHandler ( _
    sender As Object, _
    e As EventArgs _
)

ただし、Delegateからは継承しません。VB.NETのHandlesキーワードを使用します(例:Handles Button1.Click)。イベントハンドラーのポイントは何ですか?それは、ObjectとEventArgsという2つの引数を持つ単なるデリゲートですか?EventHandlerクラスがDelegateから継承しないのはなぜですか?

4

2 に答える 2

1

デリゲートはクラスではありません。そのため、継承することはできません。

観察したように、EventHandlerは、よく知られている署名を持つ単なるデリゲートであり、したがって、イベントの発生と処理の統一された方法を定義します。

于 2013-02-25T15:50:59.550 に答える
0

イベントハンドラは、イベントが発生したときに実行されるルーチンです。

デリゲートは、ルーチンへの参照です。

ハンドラーがない場合、デリゲートは何も参照できません。

デリゲートは、VBが関数ポインターを処理するための簡単な方法です。EventHandlerは関数であり、ポインターではないため、デリゲートから継承する必要はありません。

于 2013-02-25T15:27:57.900 に答える