作者cole945 (躂躂..)
看板Visual_Basic
標題Re: [VB6 ] 呼叫function的一個問題,為什麼要set
時間Fri Jul 25 01:59:10 2008
※ 引述《saininniang (莎里奈)》之銘言:
如果你有語法上的疑惑,
建議您可以直接參考 MSND 上的說明, 會更明確..
雖然 VB6 之前的文件已經找不到了,
不過也可以參考 VBScript 的文件, 和 VB6 時的語法其實大同小異
Set Statement
http://msdn.microsoft.com/en-us/library/4afksd44(VS.85).aspx
= 與 Set 的不同在,
= 只是單純的 value 的 assign/copy,
(其實你這篇的第一個推文者就點出重點了..)
就像
a = 10
b = a
在記憶體中, a 和 b 會有自己的一塊空間,
┌────┐
a│ ???? │ <-- a和b在記憶體中的示意圖
├────┤
b│ ???? │ (初始時的內容是未知的)
└────┘
┌────┐
a│ 10 │ <-- 把 10 copy進 a
├────┤
b│ ???? │
└────┘
┌────┐
a│ 10 │
├────┤
b│ 10 │ <-- 把 a 的內容 copy 一份到 b
└────┘
但 Set 跟 =, 也就是 "assign" 是不一樣的東西.
他並不是 copy 一份 object , 而是要 refer(參考、指向、關連等等) 一個ojbect
Set Obj = CreateObject(....)
┌────┐
Obj│ ‧─┼─┐
├────┤ │
............ │
├────┤ │
│ │←┘ <-- 指向某個 CreateObject() 所建立的object
└────┘
好幾個 var 是可以同時 refer 同一個object的,
所以可以
Set Obj2 = Obj ' 也是要用 Set
如果你改變Obj2, 那Obj也會觀察到相同的變化..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.0.79
→ saininniang:Oh my god 我買的書都沒寫這個 07/25 03:22
推 yauhh:很多書即使寫了這個,這個段落也比較沒人看啊,這就是軟體界 07/25 08:26
→ yauhh:急就章的態度 07/25 08:27
推 phterry:推,圖文並茂 07/25 13:55
推 timmy5519:推推推 有看有推 07/25 14:38
推 fumizuki:這個圖做的真好 簡直跟書上的圖一模一樣XD 07/25 20:54
推 horngsh: 類似C的指標變數是嗎? 07/26 11:56
推 fumizuki:一樣是參考到某個記憶體位址 但不能直接存取記憶體 07/26 19:11
→ fumizuki:到是可透過copymemory存取 07/26 19:12
→ cole945:沒有到"指標"那麼嚴重啦, 就跟C#/Java都有的reference一樣 07/26 23:10