2013-02-25 52 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