C#对象深克隆例子
+展开
-C#
//第一步,新建一个可序列化的类,用于这个对象的克隆操作
[System.Serializable]
class TestA
{
public int[] aaa ={0,0,0 };
public object GetClone(object obj)
{
using(System.IO.MemoryStream sm=new System.IO.MemoryStream())
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter binaryformatter =
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
binaryformatter.Serialize(sm, obj);
sm.Seek(0, System.IO.SeekOrigin.Begin);
object ob = binaryformatter.Deserialize(sm);
return ob;
}
}
public object GetClone2(object o)
{
return this.MemberwiseClone();
}
}
//第二步,开始测试深克隆与浅克隆的区别(浅克隆不可以创建出新的引用,深克隆则相反)
class program
{
static void Main()
{
TestA a = new TestA();
TestA b = (TestA)a.GetClone(a);
a.aaa[0] = 123;
b.aaa[0] = 222;
System.Console.WriteLine(a.aaa[0]);
System.Console.WriteLine(b.aaa[0]);
System.Console.WriteLine("___________________________");
TestA a1 = new TestA();
TestA b1 = (TestA)a1.GetClone2(a);
a1.aaa[0] = 333;
b1.aaa[0] = 444;
System.Console.WriteLine(a1.aaa[0]);
System.Console.WriteLine(b1.aaa[0]);
System.Console.ReadLine();
}
}
[System.Serializable]
class TestA
{
public int[] aaa ={0,0,0 };
public object GetClone(object obj)
{
using(System.IO.MemoryStream sm=new System.IO.MemoryStream())
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter binaryformatter =
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
binaryformatter.Serialize(sm, obj);
sm.Seek(0, System.IO.SeekOrigin.Begin);
object ob = binaryformatter.Deserialize(sm);
return ob;
}
}
public object GetClone2(object o)
{
return this.MemberwiseClone();
}
}
//第二步,开始测试深克隆与浅克隆的区别(浅克隆不可以创建出新的引用,深克隆则相反)
class program
{
static void Main()
{
TestA a = new TestA();
TestA b = (TestA)a.GetClone(a);
a.aaa[0] = 123;
b.aaa[0] = 222;
System.Console.WriteLine(a.aaa[0]);
System.Console.WriteLine(b.aaa[0]);
System.Console.WriteLine("___________________________");
TestA a1 = new TestA();
TestA b1 = (TestA)a1.GetClone2(a);
a1.aaa[0] = 333;
b1.aaa[0] = 444;
System.Console.WriteLine(a1.aaa[0]);
System.Console.WriteLine(b1.aaa[0]);
System.Console.ReadLine();
}
}
来源:http://2sws.blog.163.com/blog/static/1791024920098434454449/
加支付宝好友偷能量挖...