C#深度拷贝,浅拷贝

使用序列化的方法实现深度拷贝非常方便

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
class Person : ICloneable
{
    public object Clone()
    {
        return this.MemberwiseClone();
    }

    public Person DeepClone()
    {
        using(Stream os = new MemoryStream())
        {
            IFormatter formatter = new BinaryFormatter(); 
            formatter.Serialize(os, this);
            os.Seek(0, SeekOrigin.Begin);
            return formatter.Deserialize(os) as Person;
        }
    }

    public Person ShallowClone()
    {
        return Clone() as Person;
    }
}

你可能感兴趣的:(C#深度拷贝,浅拷贝)