子函数 vs 事件,有什么区别?

sub functions vs event, what is the difference?

我经历了 Vb.net 中的事件,我发现它们确实是一个了不起的功能..但仍然对如何有效地使用它们感到困惑。

真正的疑问是 functions 和 sub 是否可以有效替代事件。无论我对事件做什么,我都可以通过函数和方法设法做到。只要有 Raisevent,我就可以将其替换为函数或过程。那么,事件的真正好处是什么?在哪些情况下我可以使用它们来代替函数和过程?

举个例子看看你是否理解。您拥有 Button 控件。它定义了很多事件(Click,MouseDown,Keypress...)。当您在 Form 中放置一个按钮时,您可以在那里决定 您想要管理的事件是什么 。因此,在表单中,您可以在单击按钮时执行某些操作,或者不执行任何操作。

想象一下,如果这是用常规方法完成的。在那种情况下,按钮应该引用按钮所在的表单,并且表单应该有一个 Click 方法,是否使用它。

事件驱动编程使得定义一些事件以在 class 中发生某事时发出信号变得非常容易,并且创建实例的 class 是决定该事件是否相关的实例与否。

谢谢你的澄清,我明白了。我错过的一点是:事件在同一个 class 中触发,但执行是在 不同的 [=28= 中完成的].

我的意思是,当我定义一个 class 时,我可以将 RaiseEvent 放在某个地方以识别某些东西,但我将事件与另一个 class 中的子相关联。

所以,在这样一个名为 Wallet 的 class 中,我可以放置如下语句:

    If Dollars > 5 Then
        RaiseEvent Above5()
    End If

并且在这种不同的 class 中称为 AllWallet :

Dim WithEvents myWallet as new Wallet
Sub myWallet_Above5() Handles myWallet.Above5
    MsgBox("Dollars are more than 5")
End Sub

否则,我的意思是如果事件在相同的 class 中触发,它们在 中定义,则子函数和函数可以替代事件。

感谢大家