如何检查VB.NET中是否会引发事件?我似乎能够在C#中完成它,但在VB中却没有,即使我使用相同的语法。
这是我的VB.NET语法(返回错误)
If [EVENT] IsNot Nothing Then
End If
这是我的C#语法(完美运行)
If([EVENT] != null) //If an event is not null(nothing)
{
}
这是VB代码返回的错误
“[EVENT]是一个事件,不能直接调用。使用'RaiseEvent'语句来引发事件。”
答案 0 :(得分:5)
您需要在C#中使用这种语法,以确保不会引发没有订阅者的事件。这是必要的,因为这会使用NullReferenceException 崩溃你的代码。
这在VB.NET中根本不是必需的。你发现,并没有得到支持。与C#不同,它支持事件的第三个访问器(除了添加和删除),它还支持 raise 访问器。您猜对了RaiseEvent statement。它可以处理没有订阅者的事件就好了,不需要测试。
答案 1 :(得分:1)
你必须使用一个奇怪且鲜为人知的VB.Nets语法部分,如果你将Event
添加到事件名称的末尾,它会以与c#相同的方式公开对象,如果你有一个事件Foo
你可以检查是否有处理程序
If FooEvent IsNot Nothing Then
End If