深拷贝与浅拷贝---《编写高质量代码改善C#程序的157个建议》笔记

1.定义:

浅拷贝:将对象所有字段复制到新对象(副本)中,其中,值类型的值被复制到副本中之后,在副本中的修改不会影响源对象的值;而引用类型字段被复制到副本中的是引用类型的引用,而不是引用的对象,在副本中对引用类型字段的修改会影响到源对象本身。

深拷贝:将对象中的所有字段复制到新对象中,不过无论是值类型还是引用类型都会被重新创建并赋值,对于副本的修改不会影响到源对象本身。

2.注意:

无论浅拷贝还是深拷贝,都建议使用类型继承ICloneable接口的方式明确告诉调用者;该类型可以被拷贝;ICloneable接口只提供一个申明为Clone()的方法,可根据需求在Clone()方法中实现深拷贝或者浅拷贝。

一个简单浅拷贝代码如下:

理论上string是引用类型,但由于该引用的特殊性,Object.MemberwiseClone方法仍旧为其创建副本,也就是说浅拷贝过程中,我们应该讲字符串看做是值类型。

3

4.

猜你喜欢

转载自blog.csdn.net/qq_36350445/article/details/85233549