通过收集byval

时间:2013-09-20 13:34:22

标签: vb6

我在互联网上寻找几个小时,但我发现是否有可能将一个函数传递给一个函数?

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

有人有想法吗?

我的代码:

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

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

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

check here

  

当将Collection视为通过ByVal的对象时,实际克隆的唯一内容是对集合的引用......

答案 2 :(得分:-1)

我相信ByValByRef不能在同一个组件中使用Call。尝试相同但省略Call

相关问题