2021-12-02 07:08:52
浅复制(Shallow Copy) 是指创建一个新对象,但仅复制原始对象的顶层字段。若字段是引用类型(如类实例、数组等),新对象中的这些字段会共享原始对象的引用,而非创建独立副本。这意味着修改其中一个对象的引用类型字段时,另一个对象也会受到影响。
深复制(Deep Copy) 则会递归复制整个对象结构,包括所有引用类型的子对象。新对象与原始对象完全独立,修改任一对象的任何字段都不会影响另一个对象。
两者的核心区别如下:
复制范围
浅复制仅复制值类型字段和引用类型字段的引用地址。
深复制会复制所有字段,包括引用类型字段指向的实际数据。
对象独立性
浅复制的对象与原始对象不独立,共享内部引用。
深复制的对象与原始对象完全独立,无任何关联。
实现方式
浅复制可通过直接赋值(如 obj1 = obj)或调用 MemberwiseClone() 方法实现。
深复制需手动实现(如通过序列化、递归复制或实现 ICloneable 接口)。
示例说明:
在提供的代码中:
应用场景: