1.定义:
浅拷贝:将对象所有字段复制到新对象(副本)中,其中,值类型的值被复制到副本中之后,在副本中的修改不会影响源对象的值;而引用类型字段被复制到副本中的是引用类型的引用,而不是引用的对象,在副本中对引用类型字段的修改会影响到源对象本身。
深拷贝:将对象中的所有字段复制到新对象中,不过无论是值类型还是引用类型都会被重新创建并赋值,对于副本的修改不会影响到源对象本身。
2.注意:
无论浅拷贝还是深拷贝,都建议使用类型继承ICloneable接口的方式明确告诉调用者;该类型可以被拷贝;ICloneable接口只提供一个申明为Clone()的方法,可根据需求在Clone()方法中实现深拷贝或者浅拷贝。
一个简单浅拷贝代码如下:
理论上string是引用类型,但由于该引用的特殊性,Object.MemberwiseClone方法仍旧为其创建副本,也就是说浅拷贝过程中,我们应该讲字符串看做是值类型。
扫描二维码关注公众号,回复:
4637548 查看本文章
3
4.