C#深度拷贝,浅拷贝

2017-09-18  本文已影响12人  晓龙酱

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

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

<font color=blue>[Serializable]</font>
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;
    }
}
上一篇下一篇

猜你喜欢

热点阅读