如何检查是否会举起活动?

时间:2013-12-08 18:12:39

标签: vb.net events

如何检查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'语句来引发事件。”

2 个答案:

答案 0 :(得分:5)

您需要在C#中使用这种语法,以确保不会引发没有订阅者的事件。这是必要的,因为这会使用NullReferenceException 崩溃你的代码。

这在VB.NET中根本不是必需的。你发现,并没有得到支持。与C#不同,它支持事件的第三个访问器(除了添加和删除),它还支持 raise 访问器。您猜对了RaiseEvent statement。它可以处理没有订阅者的事件就好了,不需要测试。

答案 1 :(得分:1)

你必须使用一个奇怪且鲜为人知的VB.Nets语法部分,如果你将Event添加到事件名称的末尾,它会以与c#相同的方式公开对象,如果你有一个事件Foo你可以检查是否有处理程序

If FooEvent IsNot Nothing Then
End If