Re: [VB6 ] 一個問題煩請解答
※ 引述《redclock (紅色時鍾)》之銘言:
: ※ 引述《redclock (紅色時鍾)》之銘言:
: 不過我還是有點小疑問
: 為什麼在()內 Daira大哥(姊?) 要我加入byref X as XXX
: byref是什麼意思?
呼叫函式時有傳址與傳值兩種,
其中傳址代表的是將原本的物件真的傳入函式中,
因此在裡面所有的修改, 都會直接影響到函式外所傳入的參數.
相對而言, 傳值代表著將原有物件複製一份 (透過 .clone() ? 忘了 XD)
當然, 實作上可能是在要修改時才複製, 不過精神上是說,
無論你在子函式裡對傳入的參數做了什麼, 對外頭都沒有影響.
試著執行看看以下兩個函式就會明白了.
'只是顯示數字的函式而已 沒什麼內容
SUB msgBoxShow (Byval innum as Integer)
msgbox ("目前數值為: " & innum)
END SUB
'傳值情況下, 將傳入數值加一
SUB doByVal (ByVal innum as Integer)
innum = innum + 1
END SUB
'傳址情況下, 將傳入數值加一
SUB doByRef (ByRef innum as Integer)
innum = innum + 1
END SUB
'主要測試部份
SUB mainTest
Dim num as Integer
num = 1
'在傳值函式前後, 分別 msgbox 報告數值
msgBoxShow(num)
doByVal(num)
msgBoxShow(num)
'在傳址函式前後, 分別 msgbox 報告數值
msgBoxShow(num)
doByRef(num)
msgBoxShow(num)
END SUB
--
鬼壓床怎麼辦
騎上去啊
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.212.129
討論串 (同標題文章)
Visual_Basic 近期熱門文章
PTT數位生活區 即時熱門文章