如何将其翻译成C#

时间:2014-06-17 15:27:02

标签: c# vb.net events

我仍在尝试将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#文件中运行?

1 个答案:

答案 0 :(得分:1)

在我看来,这只是指CommEvent

CommEventHandler del = this.CommEvent;

我不知道为什么VB.NET允许你将其称为CommEventEvent。它可能是这些语言快捷方式之一,例如如何从自定义属性的末尾省略单词Attribute