C#深度拷贝,浅拷贝

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

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;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • 这几天的事情,让我越来越相信一句话,当你准备好了,宇宙就会给你。 周日早上,看到一篇微信公众号的文章(时间管理百科...
    喜悦的月亮阅读 737评论 0 4
  • 今天的心情蛮好的,看了很多东西,好过瘾的。感觉特想创造一些很不错的事物,只是还不知道创造些什么,不如写写小说?
    简单爱自由阅读 170评论 0 0
  • 23.“这么说,春生是被沈大伯给领养的?”我问周二叔。 “是的。老沈我俩是好朋友,虽然他长我几岁,当初却是一...
    唯一还是我阅读 374评论 0 5