请教VB中内存引用的问题

发财蛇 2003-10-29 05:25:09
使用一个方法返回一个对象类型,例如
function GetObject() as b
set getobject = b
set b = nothing
end function
为什么set b = nothing之后GetObject依然存在?难道 set getobject = b不是地址引用,而是克隆吗?
...全文
16 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
发财蛇 2003-10-30
  • 打赏
  • 举报
回复
d~
发财蛇 2003-10-30
  • 打赏
  • 举报
回复
d~
Shrewdcat 2003-10-30
  • 打赏
  • 举报
回复
照你说的意思,此是b应该是空对象了。而getobject是和b相同的一个新对象。
kmzs 2003-10-29
  • 打赏
  • 举报
回复
set b = nothing
b这个后创的对象所占的内存就被释放了
发财蛇 2003-10-29
  • 打赏
  • 举报
回复
也就是说,当执行`set getobject = b 之后,getobject与b的内容相同,但是它们拥有不同的内存空间?
subzero 2003-10-29
  • 打赏
  • 举报
回复
对象的赋值语句,并不是将指针传递给它
rainstormmaster 2003-10-29
  • 打赏
  • 举报
回复
呵呵,你的理解有误,建议看看有关com的书籍,一两句也说不明白:

set getobject = b
只是把对象b 赋予变量getobject ,赋值之后二者不存在联系
发财蛇 2003-10-29
  • 打赏
  • 举报
回复
哦,不好意思各位,是我将代码给省略,
b是一个已经实例过的对象,例如objRs或其它对象。
set getobject = b ,主要是返回一个实例过的对象b
set b = nothing,主要是将b销毁掉,以我的理解set getobject = b是对b的引用,当set b = nothing后,getobject同时也应该是nothing,但是我跟踪过来的getobject依然保存b。
如果这样的话set getobject = b应该是将对象b克隆给了getobject,而不是将地址应用给getobject
所以觉得很奇怪,请教一下高手在VB中set getobject = b怎么会是对对象的克隆?
射天狼 2003-10-29
  • 打赏
  • 举报
回复
set b = nothing
这一句有用吗?把一个类型销毁有什么用?
muniu 2003-10-29
  • 打赏
  • 举报
回复
写的不太清楚,
应该是set getobject = nothing吧

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧