关于深度复制自定义对象属性,字段的拷贝,急

lance09 2008-03-03 05:04:46
关于深度复制自定义对象属性,字段的拷贝,急

如上述

...全文
221 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
stning 2008-03-03
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;

public class MyClass
{
class InstanceA:ICloneable
{
public int x;
public InstanceB B;
public InstanceA(){}
public InstanceA(int X,InstanceB b)
{
this.x=X;
this.B=b;
}
object ICloneable.Clone()
{
return this.Clone();
}
public InstanceA Clone()
{
InstanceA A=this.MemberwiseClone() as InstanceA;
A.B=this.B.Copy();
return A; //深复制
// return (InstanceA)this.MemberwiseClone(); //浅复制
//return new InstanceA(this.x,this.B); //use this can't get deep copy too..

}
}
class InstanceB
{
public int y;
public InstanceB Copy()
{
return this.MemberwiseClone() as InstanceB;
}
}

public static void Main()
{
InstanceA obj1=new InstanceA();
obj1.x=1;
obj1.B=new InstanceB();
obj1.B.y=2;

InstanceA obj2=obj1.Clone();
obj2.x=3;
obj2.B.y=4;
Console.WriteLine("Obj1.x is:{0} \t obj1.B.y={1}",obj1.x,obj1.B.y);
Console.WriteLine("Obj2.x is:{0} \t obj2.B.y={1}",obj2.x,obj2.B.y);
Console.ReadLine();
}
}

浅拷贝是指当对象的字段值被拷贝时,字段引用的对象不会被拷贝,这样,当拷贝完毕后,源对象和拷贝对象的字段会引用同一个值。
深拷贝是对对象实例中字段引用的对象也进行拷贝的一种方式,这样,新对象将引用新的字符串。需要注意的是,执行深拷贝后,源对象和拷贝对象不会共享任何东西,改变一个对象对另一个对象没有任何影响。
http://topic.csdn.net/u/20080211/17/323a5b2f-2cab-4463-96bd-2a86fe5921d1.html
真相重于对错 2008-03-03
  • 打赏
  • 举报
回复
try 反射
wanabe 2008-03-03
  • 打赏
  • 举报
回复
up
cpio 2008-03-03
  • 打赏
  • 举报
回复
C#:浅谈对象数组,运算符重载和深度复制的应用

http://blog.csdn.net/smartken0824/archive/2007/07/08/1683053.aspx

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧