三个问题:
是否可以不创建此案例:
Dim Subscrib1 As New Policeman(carStart)
我的意思是我想要有一个我不需要创建实例的课程,例如让我们参加警察课程,我是否真的需要创建他的实例并将carStart传递给它以接收事件?例如,让我们想象警察类包含方法Do和在Console.writeline内部(" doSomething")。我希望在引发somwhere carStart.Drive时执行此方法。
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