代码之家  ›  专栏  ›  技术社区  ›  Greg Buehler

将具有多个事件参数的VB.NET事件转换为C#

  •  1
  • Greg Buehler  · 技术社区  · 15 年前

    我正在将用VB.NET编写的单元测试移植到用C#编写的大型项目中。然而,这首小曲让我想寻求帮助:

    Public Sub object_DataChange(ByVal TransactionID As Integer, _
                                 ByVal NumItems As Integer, _
                                 ByRef ClientHandles As System.Array, _
                                 ByRef ItemValues As System.Array, _
                                 ByRef Qualities As System.Array, _
                                 ByRef TimeStamps As System.Array) _
                                 Handles myObject.DataChange
    
        '' Does event code here
    End Sub
    

    转换此事件的最佳方式是什么?还有,这是一个很好的例子吗 EventHandler<> 把我的论点整合成一个结构?

    1 回复  |  直到 12 年前
        1
  •  5
  •   Peter Mortensen code4jhon    12 年前

    在本例中,您实际演示的是事件处理程序与事件。C#没有 Handles VB.NET 有相反,您必须手动将事件处理程序分配给事件,如下所示:

    myObject.DataChange += this.object_DataChange;
    

    相应地,当您处理完事件时,应该删除处理程序,如下所示:

    myObject.DataChange -= this.object_DataChange;
    

    实际的事件处理程序可以翻译如下。

    void object_DataChange(
        int TransactionID,
        int NumItems,
        ref System.Array ClientHandles,
        ref System.Array ItemValues,
        ref System.Array Quantities,
        ref System.Array TimeStamps) {
        ...
    }