2011-12-15 41 views
1

在VB.Net中,我有一個名爲WorkflowButtonEventArgs的對象,它繼承自System.EventArgsVB.Net,EventArgs,ByRef和ByVal

WorkflowButtonEventArgs類包含兩個ByRef屬性。這些是內存中的對象,我不希望它們以任何方式複製或複製。

我可以在VB.Net中通過WorkflowButtonEventArgs對象ByVal並且仍然保留WorkflowButtonEventArgs中的兩個ByRef定義嗎?

具體來說,如果我通過它BYVAL:

Dim e As New WorkflowButtonEventArgs(...) ' e has some ByRef properties 

RaiseEvent SomeEventName(e) ' e is passed ByVal 

將在eWorkflowButtonEventArgs類)的ByRef屬性/會員不得複製或在內存複製?

長故事短:我可以通過eByVal,或者我需要通過它ByRef,因爲它包含ByRef屬性?

+0

「ByRef」屬性,你的意思是一個引用類型的屬性,如類? – rskar 2011-12-15 19:50:36

+0

什麼是「ByRef」屬性?據我所知,ByRef關鍵字不適用於屬性,也不能用於聲明屬性。你可以說得更詳細點嗎? – 2011-12-15 21:02:48

回答

1

我可以通過e「ByVal」,還是我需要傳遞它「ByRef」,因爲它包含「ByRef」屬性?

是的。即使您的EventArgs已通過ByVal,引用指向的對象也不會被複制。

1

參考對象不會在內存中複製。參數ByRef關鍵字僅表示您可以更改調用代碼中參數的潛在變量值。

0

實現您的目標的另一種方法是創建一個存儲這兩個屬性的單例。