繁体   English   中英

如何将其转换为C#

[英]How to translate this into C#

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

在我看来,这仅仅是指CommEvent

CommEventHandler del = this.CommEvent;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM