zoukankan      html  css  js  c++  java
  • 面试经1:深度拷贝

    浅拷贝:指的是拷贝一个对象时,仅仅拷贝对象的引用进行拷贝,但是拷贝对象和源对象还是引用同一份实体。

    深拷贝:指的是拷贝一个对象时,不仅仅把对象的引用进行复制,还把该对象引用的值也一起拷贝。

    浅拷贝实现:所有对象的父对象都是System.Object对象,这个父对象中有一个MemberwiseClone方法,该方法就可以用来实现浅拷贝(继承ICloneable接口,上面类中重写了IConeable接口的Clone方法)。

    注:.NET中值类型默认是深拷贝的,而对于引用类型,默认实现的是浅拷贝。

    1.利用二进制序列化反序列化实现深拷贝。

    2.利用反射实现深拷贝。

    上面反射的实现方式,对于相互引用的对象会出现StackOverflower的错误,由于对象的相互引用,会导致方法循环调用。

    建议使用序列化,简单快捷的方式进行深拷贝。

    本文是对面试被问到的深度拷贝问题的总结,看了好几位大牛的博客,自己也尝试着敲了下代码试了下。

  • 相关阅读:
    JS和Jquery获取this
    写SQL经验积累2
    转载学习
    java开发3个月总结
    学习规划
    Spring Boot详解
    webSocketDemo
    spring boot中 redis配置类(4.0)
    c语言操作字符串
    聊聊面试常问的HashMap中红黑树
  • 原文地址:https://www.cnblogs.com/Julietma/p/10442630.html
Copyright © 2011-2022 走看看