我在互联网上寻找几个小时,但我发现是否有可能将一个函数传递给一个函数?
我在下面举了一个例子,正如你所看到的,函数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
答案 0 :(得分:2)
对象不是“通过引用”传递的,甚至根本不传递。你传递的是对象引用,这些可以通过ByVal或ByRef传递。
如果传递一个ByRef,则该过程可以修改调用者引用实际引用的对象。
如果您希望返回一个新的Collection实例,请创建一个并返回对它的引用。
答案 1 :(得分:0)
您正在传递集合ByVal,而不是将ByVal传递给集合中存储的值。
为什么不通过引用传递,克隆方法中的值,并使用克隆值?
当将Collection视为通过ByVal的对象时,实际克隆的唯一内容是对集合的引用......
答案 2 :(得分:-1)
我相信ByVal
和ByRef
不能在同一个组件中使用Call
。尝试相同但省略Call