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


首先,赋值的话很简单,就是将原来对象的地址给新的对象拷贝一下即可。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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值