【发布时间】:2017-08-27 17:25:20
【问题描述】:
这是用 C# 编写的原始源代码
public delegate Unit UnitResolveEventHandler(object sender, ResolveEventArgs args);
public event UnitResolveEventHandler UnitResolve;
public static Unit GetUnitByName(string name) {
Instance.unitsByName.TryGetValue(name, out result);
if (Instance.UnitResolve != null) {
foreach (UnitResolveEventHandler handler in Instance.UnitResolve.GetInvocationList()) {
result = handler(Instance, new ResolveEventArgs(name));
}
}
}
使用在线翻译器,我得到了这个 VB.NET 代码:
Public Delegate Function UnitResolveEventHandler(sender As Object, args As ResolveEventArgs) As Unit
Public Event UnitResolve As UnitResolveEventHandler
Public Shared Function GetUnitByName(name As String) As Unit
Instance.unitsByName.TryGetValue(name, result)
If Instance.UnitResolve IsNot Nothing Then
For Each handler As UnitResolveEventHandler In Instance.UnitResolve.GetInvocationList()
result = handler(Instance, New ResolveEventArgs(name))
Next
End If
End Function
编译器用以下错误消息标记事件声明:
不能使用具有返回类型的委托类型来声明事件。
Instance.UnitResolve 在 GetUnitByName() 方法内调用并显示以下错误消息:
Public Event UnitResolve As UnitResolveEventHandler' 是一个事件,并且 不能直接调用。
如何在不丢失功能的情况下正确地将代码从 C# 转换为 VB.NET?
【问题讨论】:
标签: c# .net vb.net events code-translation