Vb.net 事件提供程序和订阅服务器的正确使用方式
三个问题:Vb.net 事件提供程序和订阅服务器的正确使用方式,vb.net,Vb.net,三个问题: 这种使用事件的方式是否正确 我不知道如何使用我在一些例子中看到的事件,人们正在使用它。你能根据我的例子解释一下,或者什么时候应该使用它吗 是否可以不创建此案例: Dim Subscrib1担任新警察(carStart) 我的意思是我想要一个我不需要创建实例的类,例如,让我们以警察类为例,我真的需要创建他的实例并将carStart传递给它来接收事件吗?例如,让我们设想警察类包含方法Do和Console.writeline(“doSomething”)内部。我希望在引发carStart.
Module Module1
Sub Main()
Dim carStart As New Driver(122)
Dim Subscrib1 As New Passenger(carStart)
Dim Subscrib2 As New PoliceControl(carStart)
carStart.StartToDrive()
carStart.CheckCurrentSpeed()
Console.ReadLine()
End Sub
Class Driver
Public Delegate Sub DoIt()
Public Event Drive As DoIt
Public Event CurrentSpeed()
Public SpeedDrive As Integer
Public Sub New(ByVal speed As Integer)
Me.SpeedDrive = speed
End Sub
Public Sub StartToDrive()
Console.WriteLine("I am driving")
RaiseEvent Drive()
End Sub
Public Sub CheckCurrentSpeed()
Console.WriteLine("Current speed is " & SpeedDrive)
RaiseEvent CurrentSpeed()
End Sub
End Class
Class Passenger
Sub New(classWithevent As Driver)
If classWithevent.SpeedDrive = 0 Then
AddHandler classWithevent.Drive, AddressOf TakePassanger
Else
RemoveHandler classWithevent.Drive, AddressOf TakePassanger
End If
End Sub
Public Sub TakePassanger()
Console.WriteLine("Taking passenger")
End Sub
End Class
Class PoliceControl
Sub New(classWithevent As Driver)
If classWithevent.SpeedDrive > 120 Then
AddHandler classWithevent.CurrentSpeed, AddressOf PolicemanCheckTheCarSpeed
Else
RemoveHandler classWithevent.CurrentSpeed, AddressOf PolicemanCheckTheCarSpeed
End If
End Sub
Public Sub PolicemanCheckTheCarSpeed()
Console.WriteLine("Stop for control")
End Sub
End Class
End Module
有什么反馈吗?