VB.NET中的事件與委託(警察抓小偷)

    '警察抓小偷()
Module Module1
    
'事件委託
    Public Delegate Sub 抓小偷事件(ByVal sender As 小偷, ByVal e As 偷東西事件參數)
    
'事件參數
    Public Class 偷東西事件參數
        
Inherits System.EventArgs
        
Public 偷的東西 As String
        
Public 偷的地點 As String
        
Public 被偷的人 As String
    
End Class

    
'警察類
    Public Class 警察
        
Public Sub New()
            Console.WriteLine(
"生成警察。。。")
            Console.WriteLine()
        
End Sub

        
Public Sub 抓小偷(ByVal sender As 小偷, ByVal e As 偷東西事件參數)
            Console.WriteLine()
            Console.WriteLine(
"警察:小毛賊,哪裏跑,。。。")
            Console.WriteLine(
"(小偷被抓。)")
            Console.WriteLine()
            Console.WriteLine(
"警察:什麼名字?")
            Console.WriteLine(
"小偷:" & sender.姓名)
            Console.WriteLine(
"警察:偷了什麼?")
            Console.WriteLine(
"小偷:" & e.偷的東西)
            Console.WriteLine(
"警察:在哪裏偷的?")
            Console.WriteLine(
"小偷:" & e.偷的地點)
            Console.WriteLine(
"警察:偷了誰的?")
            Console.WriteLine(
"小偷:" & e.被偷的人)
            Console.WriteLine(
"警察:蹲局子去!100天。")
            Console.WriteLine()
        
End Sub

    
End Class

    
'小偷類
    Public Class 小偷
        
Private _姓名 As String
        
Public Property 姓名() As String
            
Get
                
Return _姓名
            
End Get
            
Set(ByVal Value As String)
                _姓名 
= Value
            
End Set
        
End Property

        
Public Sub New(ByVal 姓名 As String)
            Console.WriteLine(
"生成小偷。。。" & "(" & 姓名 & ")")
            
Me.姓名 = 姓名
            Console.WriteLine()
        
End Sub



        
Public Event 警察抓小偷事件 As 抓小偷事件
        
Public Sub 偷東西(ByVal 偷的東西 As StringByVal 偷的地點 As StringByVal 被偷的人 As String)
            Console.WriteLine(
"小偷:哈哈。。。今天偷了" & 偷的東西)
            Console.WriteLine(
"(小偷正在暗喜,欲溜。。。。)")
            Console.WriteLine()
            
Dim e As New 偷東西事件參數
            e.偷的東西 
= 偷的東西
            e.偷的地點 
= 偷的地點
            e.被偷的人 
= 被偷的人
            
RaiseEvent 警察抓小偷事件(Me, e) '偷東西激發警察抓小偷事件
        End Sub

    
End Class


    
'主程序
    Sub Main()

        
Dim 張三 As 小偷 = New 小偷("張三")
        
Dim 李四 As New 警察
        Console.WriteLine(
"公交車上,人很多,警察小偷都有,。。。(有好戲看了)。")
        
'警察開始監視小偷,若偷即抓
        AddHandler 張三.警察抓小偷事件, AddressOf 李四.抓小偷
        張三.偷東西(
"一部手機。""公交車上。""一名女士。")
        Console.ReadLine()
    
End Sub


End Module


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章