引用类型的赋值、浅拷贝和深拷贝的区别

来源:互联网 发布:淘宝买东西后店铺消失 编辑:程序博客网 时间: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();

原创粉丝点击