Delegate色々
Public Class Class5
Public Delegate Function testDelegateFunc(ByVal argStr As String) As String
Public Delegate Sub testDelegateSub()
Public Sub delegateTest()
'---定義済みDelegateを使わない
Dim myFunc0 As testDelegateSub = New testDelegateSub(AddressOf test0)
Dim myFunc2 As testDelegateFunc = New testDelegateFunc(AddressOf test2)
myFunc0()
Debug.Print(myFunc2("Test"))
'---匿名メソッドを使う
myFunc0 = Sub()
Console.WriteLine("匿名メソッド call")
End Sub
myFunc0()
myFunc2 = Function(ByVal argStr As String)
Return "匿名メソッド:" & argStr
End Function
Debug.Print(myFunc2("Call"))
'---定義済みDelegateを使う
Dim myFunc3 As Action(Of String) = AddressOf test1
myFunc3("定義済みActionDelegate")
Dim myfunc4 As Func(Of String, String) = AddressOf test2
Debug.Print(myfunc4("定義済みFuncDelegate"))
'---定義済みDelegateで匿名メソッドを使う
Dim myfunc5 As Func(Of String, String) = Function(ByVal asr As String)
Return (asr)
End Function
Debug.Print(myfunc5("定義済みFunctionDelegate且つ匿名メソッド"))
End Sub
Public Sub test0()
Console.WriteLine("test0 call")
End Sub
Public Sub test1(ByVal msg As String)
Console.WriteLine(msg & " test1 Call")
End Sub
Public Function test2(ByVal msg As String) As String
Return msg & " test2 Call"
End Function
End Class