首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

Set 傳值?傳址?该如何解决

2012-02-08 
Set 傳值??傳址????PrivateSubCommand1_Click()Diml_objProceAAsProceDiml_objProceBAsProceSetl_objProce

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相同的。

热点排行