首页 > Windows开发 > 详细

C#通过序列化实现深表复制

时间:2018-02-27 14:36:49      阅读:193      评论:0      收藏:0      [点我收藏+]

利用二进制序列化的方式进行深拷贝  有一个缺陷 序列化的类型必须标识为刻序列化的[Serializable] 否则无法进行二进制序列化

class Program
    {
        static void Main(string[] args)
        {
            Person P = new Person("小丽",20);
            Person N = (Person)DeepCopy(P);
            P.Grade = 200;
            Console.WriteLine(N.Grade.ToString());
            Console.ReadKey();
        }
        /// <summary>
        /// 利用序列化实现深拷贝
        /// </summary>
        /// <param name="_obj"></param>
        /// <returns></returns>
        static object DeepCopy(object _obj)
        {
            BinaryFormatter BF2 = new BinaryFormatter();
            using (MemoryStream stream = new MemoryStream())
            {
               BF2.Serialize(stream,_obj);
               stream.Position = 0;
               return BF2.Deserialize(stream);
            }
        }
    }
    [Serializable]
    class Person
    {
        private string mName;
        private int mGrade;
        public int Grade
        {
            get { return mGrade; }
            set { mGrade = value; }
        }
        public string Name
        {
            get { return mName; }
            set { mName = value; }
        }
        public Person(string _Name, int _Grade)
        {
            mName = _Name;
            mGrade = _Grade;
        }
        public Person()
        {


        }
    }

 

 

摘自csdn-hzq354242

C#通过序列化实现深表复制

原文:https://www.cnblogs.com/zhaochenxi/p/8478533.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!