1)浅复制:复制对象的所有字段,值类型字段复制其值,引用类型字段复制其引用。
可以通过this.MemberwiseClone()实现浅复制。
2)深复制:复制对象的所有字段,值类型字段复制其值,引用类型字段复制其引用的对象,如果有多级级引用,则复制所有级的对象。
幸好C#的序列化方法可以自动实现这个功能,我们可以借助Serialize()和DSerialize()实现对象的"深度复制".
"深复制"和"浅复制"的区别可以通过这个小程序表现出来:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
namespace ConsoleApplication9
{
[Serializable]
class DemoClass
{
public int i = 0;
public int[] iArr = { 1, 2, 3 };
public DemoClass Clone1() //浅clone
{
return this.MemberwiseClone() as DemoClass;
}
public DemoClass Clone2() //深clone
{