深度克隆对象我想做的事情如下:MyObject myObj = GetMyObj(); // Create and fill a new objectMyObject newObj = myObj.Clone();然后更改未在原始对象中反映的新对象。我不经常需要这个功能,所以当有必要的时候,我会使用创建一个新对象然后单独复制每个属性,但它总是让我觉得有更好或更优雅的处理方式情况。如何克隆或深度复制对象,以便可以修改克隆的对象而不会在原始对象中反映任何更改?
5 回答

慕虎7371278
TA贡献1802条经验 获得超4个赞
不使用的原因ICloneable是不是因为它没有一个通用的接口。 不使用它的原因是因为它含糊不清。它不清楚你是否得到浅或副本; 这取决于实施者。
是的,MemberwiseClone
做一个浅的副本,但相反的MemberwiseClone
是不是Clone
; 或许DeepClone
,它可能不存在。当您通过其ICloneable接口使用对象时,您无法知道底层对象执行哪种克隆。(并且XML注释不会说清楚,因为您将获得接口注释而不是对象的Clone方法上的注释。)
我通常做的只是制作一个Copy
完全符合我想要的方法。
- 5 回答
- 0 关注
- 623 浏览
添加回答
举报
0/150
提交
取消