引用类型的赋值、浅拷贝和深拷贝的区别
来源:互联网 发布:淘宝买东西后店铺消失 编辑:程序博客网 时间:2024/06/07 09:01
首先,赋值的话很简单,就是将原来对象的地址给新的对象拷贝一下即可。2个变量会同时改变,一个改变,另一个也改变!
浅拷贝,需要继承ICloneable 接口(支持克隆,即用与现有实例相同的值创建类的新实例)然后用MemberwiseClone 方法(创建当前 System.Object 的浅表副本)。但是需要注意的是MemberwiseClone的拷贝方式,首先它是浅拷贝,方法是将所有的值类型字段拷贝一个副本,但是引用类型的字段不会创建副本,仅仅是传递一个相同的地址给新对象,并且新对象和原对象指向的地址都是一致的。
浅拷贝实现:
public class model {public int id;public int name;public object Clone() { return this.MemberwiseClone(); }}
在基类Object类中有:
protected object MemberwiseClone();
调用:model m =(model) model.Clone();
- 引用类型的赋值、浅拷贝和深拷贝的区别
- 引用类型的赋值、浅拷贝和深拷贝的区别
- Python中的赋值,浅拷贝和深拷贝的区别
- python 赋值的时候是引用,如果需要复制则需要注意深拷贝和浅拷贝的区别
- 拷贝和赋值的区别
- Python FAQ2:赋值、浅拷贝、深拷贝的区别?
- Python 赋值、浅拷贝、深拷贝的区别?
- Python赋值、浅拷贝与深拷贝之间的区别
- Python中赋值、浅拷贝、深拷贝的区别
- Python 赋值、浅拷贝、深拷贝的区别?
- Python 赋值、浅拷贝、深拷贝的区别?
- 深拷贝和浅拷贝的区别
- 浅拷贝和深拷贝的区别
- 深拷贝和浅拷贝的区别
- 深拷贝和浅拷贝的区别
- 深拷贝和浅拷贝的区别
- 深拷贝和浅拷贝的区别
- 浅拷贝和深拷贝的区别?
- 互联网大佬生存法则:如何防守周鸿祎?
- 为什么付费用户才是“最好”的用户
- C#和JAVA中的构造器的详解
- Windows2008 IIS7+PHP 5.3.5配置PHP图解
- 线程间通讯《代码》pthread_cond_wait/signal
- 引用类型的赋值、浅拷贝和深拷贝的区别
- 各种游戏特效(持续更新)
- 导图 SQL Server之SQL语言基础
- apache+tomcat配置
- hdoj 1150 Machine Schedule
- 用Collect对内表分组统计
- Mysql游标和循环
- Android显示系统之View与SurfaceView更新屏幕的区别
- 服务提供者框架