Set 傳值??傳址????
Private Sub Command1_Click()
Dim l_objProceA As Proce
Dim l_objProceB As Proce
Set l_objProceA = New Proce
Set l_objProceB = New Proce
l_objProceA.ProcessCode = "AAAAA "
l_objProceB.ProcessCode = "BBBBB "
Set l_objProceA = l_objProceB
l_objProceA.ProcessCode = "CCCCC "
MsgBox l_objProceB.ProcessCode
End Sub
問題:
Set l_objProceA = l_objProceB
改變A後,為什麼B也跟著改變了
使用SET語句,對像之間是傳址嗎?
我想得到B的一個幅本A,操作A而不會影響到B,要如何做呢?
[解决办法]
我的理解,l_objProceB,l_objProceA相当于两个指针
Set l_objProceA = l_objProceB并非复制一个对象
而是让它们两个指向同一个对象
[解决办法]
引用类型的对象默认传的是指向堆的地址。
[解决办法]
如果得到副本,你看看对象有没有Clone方法,有的话返回副本。
否则你可以重新有构造函数再建立一个对象,把信息全部设置成跟A相同的。