我仍在尝试将VB中的内容翻译成C#,我的最新问题涉及事件。在我有的原始事件文件中,
Public Event CommEvent As CommEventHandler
Public Delegate Sub CommEventHandler(ByVal source As Rs232, ByVal Mask As EventMasks)
然后请致电上述,
Protected Sub OnCommEventReceived(ByVal source As Rs232, ByVal mask As EventMasks)
Dim del As CommEventHandler = Me.CommEventEvent
If (Not del Is Nothing) Then
Dim SafeInvoker As ISynchronizeInvoke = Nothing
Try
SafeInvoker = DirectCast(del.Target, ISynchronizeInvoke)
Catch
End Try
Try
If (Not SafeInvoker Is Nothing) Then
SafeInvoker.Invoke(del, New Object() {source, mask})
Else
del.Invoke(source, mask)
End If
Catch
'!!! TO-DO
End Try
End If
End Sub
现在如果我在上面使用VB到C#转换器,我会很好,
public event CommEventHandler CommEvent;
public delegate void CommEventHandler(Rs232 source, EventMasks Mask);
和
protected void OnCommEventReceived(Rs232 source, EventMasks mask)
{
CommEventHandler del = this.CommEventEvent;
if (((del != null))) {
ISynchronizeInvoke SafeInvoker = null;
try {
SafeInvoker = (ISynchronizeInvoke)del.Target;
} catch {
}
try {
if (((SafeInvoker != null))) {
SafeInvoker.Invoke(del, new object[] { source, mask });
} else {
del.Invoke(source, mask);
}
} catch {
//!!! TO-DO
}
}
}
我的问题是CommEventEvent。在C#文件中没有这个定义,但它在原始的VB文件中,而且代码翻译很乐意翻译它。
欢迎来自哪里,如何让它在C#文件中运行?
答案 0 :(得分:1)
在我看来,这只是指CommEvent
:
CommEventHandler del = this.CommEvent;
我不知道为什么VB.NET允许你将其称为CommEventEvent
。它可能是这些语言快捷方式之一,例如如何从自定义属性的末尾省略单词Attribute
。