EventHandler误解了

时间:2013-02-25 15:25:15

标签: vb.net delegates

我已经阅读了以下问题,该问题询问了Delegate和EventHandler之间的区别:Difference between EventHandler and delegete void()。我今天下午在这里读到了一些其他问题。

我知道Delegate是指向函数的指针并且是多播的。我已经读过,事件处理程序“是一个”代表。我注意到它有这个签名:

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

但是,它不会从Delegate继承。我确实在VB.NET中使用了Handles关键字,例如处理Button1.Click。事件处理程序有什么意义?它只是一个有两个争论的委托,即Object和EventArgs?为什么EventHandler类不从Delegate继承?

2 个答案:

答案 0 :(得分:1)

代表不是一个班级。因此它不能被继承。

您观察到的EventHandler只是一个具有众所周知签名的委托,因此定义了事件触发和处理的统一方式。

答案 1 :(得分:0)

事件处理程序是事件发生时要执行的例程。

委托是对例程的引用。

如果您没有处理程序,则委托不能引用任何内容。

委托是VB处理函数指针的简便方法。 EventHandler不需要从委托继承,因为它是一个函数,而不是一个指针。