1

在 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

(类)中的ByRef属性/成员不会在内存中复制或复制吗?eWorkflowButtonEventArgs

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

4

3 回答 3

1

我可以传递 e“ByVal”,还是需要传递“ByRef”,因为它包含“ByRef”属性?

是的。引用指向的对象将不会被复制,即使您EventArgs通过 ByVal 也是如此。

于 2011-12-15T19:40:45.767 回答
1

引用对象不会在内存中重复。参数上的ByRef关键字仅意味着您可以更改调用代码中参数基础的变量的值。

于 2011-12-15T19:42:13.943 回答
0

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

于 2011-12-15T19:43:56.983 回答