将事件声明从 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
。由于事件总是有一个空方法分配给它,它不会抛出异常。
参见:
我目前正在将 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
。由于事件总是有一个空方法分配给它,它不会抛出异常。
参见: