利用二進制序列化的方式進行深拷貝 有一個缺陷 序列化的類型必須標識爲刻序列化的[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