2013-02-25 54 views
1

我已閱讀以下問題,詢問Delegate和EventHandler之間的差異:Difference between EventHandler and delegete void()。今天下午我在這裏讀到了一些其他問題。EventHandler誤解

我明白一個委託是一個指向函數的指針,並且是組播。我已經讀過這個事件處理程序「是一個」代表。我注意到它有這個簽名:

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

但是,它不從Delegate繼承。我在VB.NET中使用了Handles關鍵字,例如處理Button1.Click。事件處理程序的要點是什麼?它是否只是一個有兩個參數的代表,即Object和EventArgs?爲什麼EventHandler類不能從Delegate繼承?

回答

0

事件處理程序是當發生事件時要執行的例程。

委託是對例程的引用。

如果您沒有處理程序,則委託無法引用任何內容。

委託是VB處理函數指針的簡單方法。 EventHandler不需要從委託繼承,因爲它是一個函數,而不是指針。

1

委託人不是班級。因此它不能被繼承。

正如你所看到的,EventHandler只是一個擁有衆所周知簽名的委託,因此定義了一個統一的事件觸發和處理方式。

+0

+1代表「代表不是班級」。 – w0051977 2013-02-25 17:52:56