我已经阅读了以下问题,该问题询问了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继承?
答案 0 :(得分:1)
代表不是一个班级。因此它不能被继承。
您观察到的EventHandler只是一个具有众所周知签名的委托,因此定义了事件触发和处理的统一方式。
答案 1 :(得分:0)
事件处理程序是事件发生时要执行的例程。
委托是对例程的引用。
如果您没有处理程序,则委托不能引用任何内容。
委托是VB处理函数指针的简便方法。 EventHandler不需要从委托继承,因为它是一个函数,而不是一个指针。