我对他的文章有疑问。
我将源代码转换为 Vb.net,但这一行有问题:
var handler = MyEvent
谁能帮我把这条线翻译成VB.net?
var handler = MyEvent;
if (handler == null)
{
Console.WriteLine("No listeners");
return;
}
可以翻译成
Dim handler = MyEventEvent
If handler Is Nothing
Console.WriteLine("No listeners")
Return
End If
您需要使用 Custom 关键字声明自定义事件以访问底层委托。这篇MSDN Library 文章对此进行了很好的解释。
需要注意的是,像这样捕获异常是非常不明智的。捕获异常需要您恢复程序状态,就好像事件从未引发过一样。撤消任何更改会导致部分执行的代码。这对于事件来说是不可能的,事件契约隐含的是你对订阅事件处理程序的代码一无所知。这意味着完全不可能恢复状态。catch 块必须出现在事件处理程序中,而不是出现在引发事件的代码中。忽略这个博主试图给你的建议。
我认为要么
Dim handler As EventHandler = MyEvent
或者
Dim handler As EventHandler = AddressOf MyEvent