1

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

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

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

但是,它不继承自 Delegate。我确实使用了 VB.NET 中的 Handles 关键字,例如 Handles Button1.Click。事件处理程序的意义何在?它只是一个有两个争论的代表,即对象和事件参数?为什么 EventHandler 类不继承自 Delegate?

4

2 回答 2

1

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

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

于 2013-02-25T15:50:59.550 回答
0

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

委托是对例程的引用。

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

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

于 2013-02-25T15:27:57.900 回答