作者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
1F:→ saininniang:Oh my god 我买的书都没写这个 07/25 03:22
2F:推 yauhh:很多书即使写了这个,这个段落也比较没人看啊,这就是软体界 07/25 08:26
3F:→ yauhh:急就章的态度 07/25 08:27
4F:推 phterry:推,图文并茂 07/25 13:55
5F:推 timmy5519:推推推 有看有推 07/25 14:38
6F:推 fumizuki:这个图做的真好 简直跟书上的图一模一样XD 07/25 20:54
7F:推 horngsh: 类似C的指标变数是吗? 07/26 11:56
8F:推 fumizuki:一样是参考到某个记忆体位址 但不能直接存取记忆体 07/26 19:11
9F:→ fumizuki:到是可透过copymemory存取 07/26 19:12
10F:→ cole945:没有到"指标"那麽严重啦, 就跟C#/Java都有的reference一样 07/26 23:10