我习惯用C#编程,所以我不知道如何处理委托并在VB中传递方法
我得到的错误是:Argument not specified for parameter 'message' of 'Public Sub ReceiveMessage(message As String)'
以下是我要传递给的类的构造函数:
Delegate Sub ReceiveDelegate(message As String)
Public ReceiveMethod As ReceiveDelegate
Sub New(ByRef receive As ReceiveDelegate)
ReceiveMethod = receive
End Sub
这是我尝试传递给该构造函数的方法:
Public Sub ReceiveMessage(message As String)
MessageBox.Show(message)
End Sub
我正在使用它:
Dim newClass As New Class(ReceiveMessage)
这样做的目的是,一旦类从网络设备接收数据,它就可以异步调用Form上的相应方法。
答案 0 :(得分:1)
您需要创建委托对象并使用AddressOf
运算符,如下所示:
Dim newClass As New Class(New ReceiveDelegate(ReceiveMessage))
但是,如果您没有显式创建委托对象,VB.NET将根据签名自动确定正确的类型,并为您创建,所以您可以这样做:
Dim newClass As New Class(AddressOf ReceiveMessage)
后者显然不那么打字,但前者更明确。所以,请选择。这两种方式都是完全可以接受和普遍的。