子功能vs事件,有什么区别?

时间:2017-04-17 13:38:04

标签: vb.net function oop events raiseevent

我参加了Vb.net中的活动,我发现它们确实是一个非常棒的功能......但仍然对如何有效地使用它们感到困惑。

真正的疑问是函数和子函数可能是事件的有效替代品。无论我如何处理事件,我都可以通过功能和方法来做到这一点。无论哪里有Raisevent,我都可以用功能或过程代替它。那么,事件的真正好处是什么?在哪些情况下我可以使用它们而不是功能和程序?

2 个答案:

答案 0 :(得分:2)

让我们看看你是否通过一个例子来理解它。你有Button控件。它定义了很多事件(Click,MouseDown,Keypress ...)。当您在Form中添加按钮时,您决定您要管理的活动。因此,在单击按钮或不执行任何操作时,您可以执行某些操作。

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

事件驱动的编程很容易定义一些事件,以便在类中发生某些事件时发出信号,并且是创建实例的类,它决定该事件是否相关。

答案 1 :(得分:0)

谢谢你的澄清,我明白了。我错过的观点是:事件在同一个类中被触发,但执行是在不同的类中完成的。

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

所以,在这个名为Wallet的类中,我可以发表如下声明:

    If Dollars > 5 Then
        RaiseEvent Above5()
    End If

在名为AllWallet的不同类中:

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

否则,我的意思是如果事件是在定义的同一个类中触发的,则子函数和函数可以替换事件。

感谢所有