object.CLONE()是浅拷贝还是深拷贝?

shankaipingo 2009-07-29 04:09:03
Hashtable temp = (Hashtable)ControlList.Clone();
foreach (DictionaryEntry de in temp)
{
if (!(de.Value is WebControl))
{
ControlList.Remove(de.Key);
}
}
由此可见,应该是深拷贝才对。但注释写的是shallow copy ,不解中。。。
...全文
655 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
shankaipingo 2009-07-30
  • 打赏
  • 举报
回复
哦,我明白了,都是引用。。。
ljm10 2009-07-29
  • 打赏
  • 举报
回复
错了,是浅拷贝。打个比喻,要是你住在一栋大厦的一间房,然后将大厦炸掉,当然你的房子也给炸掉了。浅拷贝有引用地址,而引用的地址指向实际地址,因此删掉引用必然会删除实际地址的。
Jinglecat 2009-07-29
  • 打赏
  • 举报
回复
object 难道有默认实现的 Clone 方法?

实现 IClonable.Clone 一般是为了深拷贝,但是怎么 深,是由实现着决定的!

object.MemberwiseClone 是浅拷贝
chen_ya_ping 2009-07-29
  • 打赏
  • 举报
回复
Clone是浅拷贝 Copy是深拷贝
  • 打赏
  • 举报
回复
浅拷贝也不会指向同一个地址,只是指向一个引用。因为原来的HashTable每一个Key都有一个引用

而如果是一个person
大家都去引用这个person
则就会出错了。

[Quote=引用 7 楼 shankaipingo 的回复:]
以上代码是不出错的,是对的。如果是浅拷贝,就应该就是指的同一地址吧,在foreach中肯定会出错的呀
[/Quote]
shankaipingo 2009-07-29
  • 打赏
  • 举报
回复
以上代码是不出错的,是对的。如果是浅拷贝,就应该就是指的同一地址吧,在foreach中肯定会出错的呀
yqyqyoyo 2009-07-29
  • 打赏
  • 举报
回复
未了说明什么?
VistaKobe 2009-07-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cpp2017 的回复:]
你是怎么看是的呢?我却看是出浅
拷贝
[/Quote]

bigmingming 2009-07-29
  • 打赏
  • 举报
回复
http://www.siruo.net.cn/pubnews/HTML/785.html
cpp2017 2009-07-29
  • 打赏
  • 举报
回复
ControlList.Remove(de.Key); 如果不出错,说明什么问题?
cpp2017 2009-07-29
  • 打赏
  • 举报
回复
你是怎么看是的呢?我却看是出浅
拷贝
shankaipingo 2009-07-29
  • 打赏
  • 举报
回复
自已顶 个

62,247

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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