C#經過序列化實現深表複製

利用二進制序列化的方式進行深拷貝  有一個缺陷 序列化的類型必須標識爲刻序列化的[Serializable] 不然沒法進行二進制序列化ui

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-hzq354242spa

相關文章
相關標籤/搜索