0

我在互联网上找了几个小时,但我没有发现是否可以将集合传递给函数?

我在下面举了一个例子,正如你所看到的,函数 ObjPtr 返回相同的长指针,因此 collTemp 和 myCollection 是相同的,尽管有 ByVal 参数。

有人有想法吗?

我的代码:

private sub function1

  dim myCollection as new collection

  call myFunction(mycollection)

  'For example, ObjPtr(myCollection) = 123456
end sub

'in another class
private sub myFunction(ByVal collTemp as Collection)

   'some code
   'ObjPtr(collTemp) = 123456

end sub
4

3 回答 3

2

对象不是“通过引用”传递的,甚至根本没有传递。您传递的是对象引用,这些引用可以通过 ByVal 或 ByRef 传递。

如果您传递一个 ByRef,则该过程可以修改调用者的引用实际引用的对象。

如果您希望返回一个新的 Collection 实例,请创建一个并返回对它的引用。

于 2013-09-21T05:03:30.353 回答
0

您正在传递集合 ByVal,而不是传递 ByVal 存储在集合中的值。

为什么不通过引用传递,克隆方法中的值,并使用克隆的值?

在这里检查

当将集合视为传递 ByVal 的对象时,唯一实际被克隆的是对集合的引用......

于 2013-09-20T13:42:12.603 回答
-1

我相信ByVal并且ByRef不要Call在同一个组件内使用。尝试相同但省略Call

于 2013-09-20T13:45:11.790 回答