如何将其转换为c#
本文关键字:转换 | 更新日期: 2023-09-27 18:09:04
我仍然在尝试将东西从VB翻译到c#,我最近的问题涉及事件。在原来的Event文件中,我有
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#文件中工作?
在我看来,这只是指CommEvent
:
CommEventHandler del = this.CommEvent;
我不知道为什么VB。NET允许您将其称为CommEventEvent
。它可能是那些语言的快捷方式之一,就像你如何从自定义属性或其他东西的末尾省略单词Attribute
。