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

2021-02-12 06:17

阅读:607

标签:col   void   summary   ring   无法   post   des   read   标识   

利用二进制序列化的方式进行深拷贝  有一个缺陷 序列化的类型必须标识为刻序列化的[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();
        }
        /// 
        /// 利用序列化实现深拷贝
        /// 
        /// 
        /// 
        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#通过序列化实现深表复制

标签:col   void   summary   ring   无法   post   des   read   标识   

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

上一篇:C#生成Excel

下一篇:C# ref 和 out 的使用


评论


亲,登录后才可以留言!