2009-10-13 22 views
1

我正在將用VB.NET編寫的單元測試移植到用C#編寫的較大項目中。然而,這個小玩意有我尋求幫助:將具有多個事件參數的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<>將我的論點合併到一個結構中是否是一個好的例子?

+0

只是一個提示。如果我沒有弄錯SharpDevelop有一個將VB.net轉換爲C#代碼的功能。所以如果你有很多代碼需要轉換,那可能值得一試。 – Pete 2009-10-13 22:15:31

回答

5

在這種情況下,您實際上正在演示事件處理程序與事件。 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) { 
    ... 
}