设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2122|回复: 2
打印 上一主题 下一主题

[已经解决] 关于变量复制问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
85
在线时间
146 小时
注册时间
2011-8-14
帖子
70
跳转到指定楼层
1
发表于 2013-4-2 22:08:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 熊熊烈火雄壮 于 2013-4-2 22:54 编辑

想实现A,B两个对象互换
于是这样写了
temp = A
A = B
B = temp
实际效果却不是所想的那样

temp,A实际为同一个对象,并不像C语言里面,只是个临时中间变量
对temp操作的同时,对象A也变动了


想问下,该如何解决这个问题?
头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

2
发表于 2013-4-2 22:14:01 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
146 小时
注册时间
2011-8-14
帖子
70
3
 楼主| 发表于 2013-4-2 22:21:42 | 只看该作者
本帖最后由 熊熊烈火雄壮 于 2013-4-2 22:53 编辑
晴兰 发表于 2013-4-2 22:14
首先 第三变量交换法 那个temp不应该再利用
然后 ……用深度复制吧…… A.clone A.dup 或者Marshal.load(Ma ...


还请详细解释下。

第三变量不利用temp的话,那该如何?
是再把temp复制给另外一个变量?


深度复制是以下这么操作吗?

temp1 = Marshal.load(Marshal.dump(A))
temp2 = Marshal.load(Marshal.dump(B))
A = temp2
B = temp1



temp1 = A.clone
temp2 = B.clone
A = temp2
B = temp1

???

点评

非常感谢您的解答~  发表于 2013-4-2 22:53
这两种可以。第三变量temp在完成交换之后,不应该再利用的意思。  发表于 2013-4-2 22:48
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-27 18:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表