1

我正在继续尝试学习 VB.net,并且我经常访问这里。

所以,我又回来了,带着一个稍微不同的问题。我以前得到了很大的帮助,希望能再次利用自己。

我有这个 CSharp 代码:

public delegate void MyHandler(string DataLine);
foo.Handler = new MyHandler(MySub);
void MySub(string DataLine);

(当我将鼠标悬停在“MyHandler”上时,VS 助手会说“MyHandler.MyHandler(void (string) target)”

我想在 VB.net 中设置委托,但我似乎无法将这三个项目联系起来,所以它们都可以一起工作:

Private Delegate Sub MyHandler(ByRef DataLine as string)
??????  as MyHandler
Private Sub MySub (ByRef DataLine as string)

有没有“??????” 需要是 Dim {something},或 Declare {something} 或 ??? 或者其他两行之一是否有错误?

(如果有任何遗漏的信息,请告诉我)

谢谢

查理

4

2 回答 2

2

在 VB.Net 中,您可以使用AddressOf将 a 分配Sub给 a Delegate

foo.Handler = AddressOf MySub
于 2013-11-04T18:32:46.820 回答
0

鉴于这种:

Private Delegate Sub MyHandler(ByRef DataLine as string)

Private Sub MySub(ByRef DataLine as string)
    ' Do something here
End Sub

您可以声明和实例化委托,如下所示:

Dim TheHandler As MyHandler
TheHandler = AddressOf MySub 
于 2013-11-04T19:09:00.520 回答