深拷贝和浅拷贝
深拷贝和浅拷贝
- 浅拷贝
- 指拷贝原始对象中所有的非静态值类型和所有引用类型成员的引用(拷贝后的对象共享所有引用类型成员的实际对象)
- 类型基类System.Object已经为所有类型实现了浅拷贝,类型所要做的就是公开一个复制的接口,这个接口一般借由实现ICloneable接口来实现,ICloneable只包含了一个Clone方法,该方法即可以被实现为浅复制也可以被实现深拷贝
- 实现方式:
- 实现ICloneable接口来实现对象浅拷贝(MemberwiseClone)
- 实现ICloneable接口来实现对象浅拷贝(MemberwiseClone)
- 深拷贝
- 指拷贝一个对象时,当存在值类型时将对象里面的值类型拷贝,当存在引用类型时,不仅仅将对象的引用进行拷贝,还将该对象引用的值也一起拷贝(拷贝后的对象跟源对象完全互相独立)
- 实现方式
- 自己手动new对象
- 反射
- 序列化和反序列化
- 自己手动new对象
- 指拷贝一个对象时,当存在值类型时将对象里面的值类型拷贝,当存在引用类型时,不仅仅将对象的引用进行拷贝,还将该对象引用的值也一起拷贝(拷贝后的对象跟源对象完全互相独立)
- 效果:
- 注意:
- 一般可被继承的类型应该避免实现ICloneable接口, 因为这样将强制所有的子类型都需要实现ICloneable接口,否则将使类型的拷贝不能覆盖子类的新成员
- 链接:
https://www.cnblogs.com/dotnet261010/p/12329220.html
本文作者:乐天--
本文链接:https://www.cnblogs.com/blackamon/p/17485188.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!