Visual_Basic 板


LINE

※ 引述《kucom (kucom)》之铭言: : 感谢P大的回覆 : 看了您的文之後 我整理一下 : (1) : Dim benz as new car() : Dim MyCar as car : MyCar=benz : MyCar参考指向benz,等於benz这个物件,二者存取同个记忆体配置 没错,虽然理论上可能不该这麽说,但实际结果是这样 : (2) : Dim benz as new car() : Dim MyCar as car : benz=MyCar : 原本benz有自已的记忆体配置,有自已的资料成员,是执行实体的个体(物件) : 但benz指向MyCar後,就成了参考,放弃原本的记忆体配置 : 在语法上是没有错的,只是benz由物件成了参考? : 请问记忆体配置在benz指向MyCar时会自动释放掉吗? 还是一直存在至程式结束? 应该会释放掉,在弃置资源回收时吧 记得之前我也问过这个问题,因为我动态产生的物件非常多 很担心虽然我命令它释放,他却来不及释放的问题 不过似乎是不会这样子 : (3) : Dim benz as new car() : Dim ford as new car() : ford=benz : 请问如果左右二边都是物件,都有自已的记忆体配置及资料成员, : 这样的写法有错吗? 语法上有错吗? : 物件可以去承接物件吗? : 若可以,这样的写法,会导致个别的记忆体配置如何处理? : ford与benz都指向同个记忆体配置(benz)吗? : ford原本的记忆体配置会自动释放掉? : 或是ford,benz有个别自已的记忆体配置,只是ford的资料成员跟benz一样, : 等於benz copy一份给ford? : 感谢大家的解答~ 不对,这个Case其实就跟上面的第二个Case一样 差别只在於指向的目标是物件还是Class 不管何者, = 这个动作都会迫使ford放弃自身的所有内容成为某人的别名 只有在有些东西的方法 比如说阵列的clone方法时 会另外制造出一个物件丢给被授与者,也就是等号右端制作一个副本给等号左端 制造出来的副本只有内容跟右边原始物件相同,但是修改不会同时改到两个 写起来就是ford = benz.clone() 但,此时只是将指向得对象换成是一份副本 ford依然会放弃自己的所有资讯来承接这一份副本 而不是单纯的将右边的值给予左边而已 所以你要直接使用=赋值的话 等号左边的东西使用new就会有点多此一举,几乎等於是白做 除非你在赋值前就有需要存取这个东西 或者是赋值的叙述为条件判断,无论如何你都需要存取他 好比说 dim ford as car = new car() dim bmw as car = new car() .... .. . if ford.speed < bmw.speed then ford = bmw end if me.text = ford.speed 像这样的话 就表示一开始存在两辆车 然後比较两者的speed值谁比较厉害 如果ford比bmw差的话 就将你持有的ford内容换成bmw 但是名字还是叫ford 之後你印出你持有那台叫做ford车辆的速度时 实际上就会印出bmw那台车的速度 假如印出前名为bmw的车辆没上油跑不快导致速度低落 那你之後在印出ford这辆车时,印出来的速度值也会跟着低落 因为实际上两者都是同样的一辆车 (若if有成立的话) 那台实际上的可怜ford,在你发现它速度低落时就丢到荒野的路边了 你也把你原本加装的卫星定位改装到bmw上 (BMW本身也有自己的定位,但你习惯用ford的) 你因为失去ford的卫星导航再也找不到这辆车 所以之後这辆车子只能在那边等待托运废车的来拖走 而你不管使用ford的卫星导航或是bmw的卫星导航 都会找到同一辆BMW 除非if判断不成立,不然你一定会失去那台ford 那如果是将ford = bmw 修改成 ford = bmw.clone (假设BMW有clone这种复制方法) 那就会复制出一模一样的另一台BMW,给你装上原本ford的卫星导航 但是刚刚还在得那台ford,还是一样非丢弃不可 所以说从这点来说 如果你只需要拿来承接物件的话 就不需要将承接者也制造成物件 反正最後都会失去刚刚制造出来的物件,根本没差 -- 啊对了,什麽是浅层副本啊? 好像是说复制时不会包含某些东西 以这样来说或许完全复制说起来也不对 但是实际上到底有什麽差别呢? --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.234.92
1F:推 kucom:谢谢您喔,讲解很清楚...感谢^^ 06/03 09:39







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP