[英]Overload VB.NET event?
在我的VB.NET類中,我有一些如下代碼:
Public Class barClass
Private Function foo(data as string)
msgbox("Data is a string: " & data)
End Function
Private Function foo(data as integer)
msgbox("Data is an integer: " & data
End Function
End Class
顯然,這可以讓您將字符串或整數傳遞給foo
。
我認為我可以為事件做同樣的事情,所以我嘗試:
Public Event FooRaised(data as string)
Public Event FooRaised(data as integer)
我以為我可以通過傳遞從foo
獲得的任何數據來引發事件,但是我得到一個錯誤,說我不能這樣做(那個FooRaised已經被聲明了)。
我該如何實現?
使用Object參數聲明一個事件,然后檢查類型以對其進行處理:
Public Class Form1
Public Event Foo(o As Object)
Sub FooHandler(o As Object) Handles Me.Foo
If o.GetType Is GetType(Integer) Then
Dim i As Integer = DirectCast(o, Integer)
i += 1 'add one to the integer value'
MsgBox(i.ToString)
ElseIf o.GetType Is GetType(String) Then
Dim s As String = DirectCast(o, String)
s &= "!!" 'append exclamation marks'
MsgBox(s)
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
RaiseEvent Foo(21)
RaiseEvent Foo("a string value")
End Sub
End Class
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.