VB.Net,EventArgs,ByRef和ByVal

时间:2011-12-15 19:37:42

标签: asp.net vb.net byref eventargs byval

在VB.Net中,我有一个名为WorkflowButtonEventArgs的对象,它继承自System.EventArgs

WorkflowButtonEventArgs类包含两个ByRef属性。这些是内存中的对象,我不希望它们以任何方式复制或复制。

我是否可以在VB.Net中传递WorkflowButtonEventArgs对象ByVal并让它保留ByRef中的两个WorkflowButtonEventArgs定义?

具体来说,如果我把它传递给ByVal:

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

RaiseEvent SomeEventName(e) ' e is passed ByVal

ByRefe类中的WorkflowButtonEventArgs属性/成员是否不会被复制或复制到内存中?

长篇简短:我可以通过e ByVal,还是我需要传递ByRef,因为它包含ByRef属性?

3 个答案:

答案 0 :(得分:1)

  

我可以通过e" ByVal",或者我是否需要通过它" ByRef"因为它包含" ByRef"特性

是。即使您的EventArgs传递了ByVal,也不会复制引用指向的对象。

答案 1 :(得分:1)

参考对象不会在内存中重复。参数上的ByRef关键字仅表示您可以更改调用代码中参数的变量值。

答案 2 :(得分:0)

实现目标的另一种方法是创建一个存储两个属性的单例。