将事件声明从 C# 转换为 Visual Basic 2010

Convert event declaration from C# to Visual Basic 2010

我目前正在将 class 从 C# 转换为 Visual Basic 2010。

在我使用 EventHandlers 之前,大多数部分都运行良好。我无法将以下代码行转换为 Visual Basic,无论是我自己还是使用转换器:

public event EventHandler<StringEventArgs> ServerMessage = delegate { };

转换器的代码只给我错误 "End of statement expected":

Public Event ServerMessage As EventHandler(Of StringEventArgs) = Sub() 

End Sub

那么,delegate { } 部分甚至需要转换为 Visual Basic 代码吗?

如果可以,如何正确转换?

如果没有,仅使用以下内容是否足够:

Public Event ServerMessage As EventHandler(Of StringEventArgs)

?

VB.NET 的 RaiseEvent 在实际引发事件之前检查事件是否没有订阅者(它不会抛出异常),因此您的

Public Event ServerMessage As EventHandler(Of StringEventArgs)

应该可以。

这就是在 C# 中将委托设置为 delegate{ }; 的目的——以避免在引发事件时必须检查 null。由于事件总是有一个空方法分配给它,它不会抛出异常。

参见: