实施ICloneable时是否应该提供深层克隆?
时间:2020-03-06 14:54:16 来源:igfitidea点击:
从MSDN文档中我不清楚,在实现ICloneable时是否应该提供深层克隆还是浅层克隆。首选的选择是什么?
解决方案
默认情况下,克隆是深层的,那就是命名约定
出于性能方面的考虑,复制和构造函数的构造可以很浅。
编辑:此命名约定超出了范围,对于.Net,Java,C ++,Javascript等来说,它是相同的...实际来源超出了我的了解,但是它属于标准的面向对象词典的一部分,就像对象和类一样。因此,MSDN没有指定实现,因为它是单词本身给定的(当然,很多面向对象语言的新手都不知道这一点,他们应该指定它,但是无论如何,它们的文档仍然很节俭)
简短的回答:是的。
长答案:不要使用ICloneable。这是因为.Clone未被定义为浅克隆或者深克隆。我们应该实现自己的IClone接口,并描述克隆的工作方式。