C#object如何实现深拷贝

avatar
作者
筋斗云
阅读量:0

在C#中实现深拷贝的方法有很多种,以下是其中一种方法:

  1. 使用序列化和反序列化:将对象序列化为字节数组,然后再将字节数组反序列化为一个新的对象。这样可以创建一个完全独立的对象,与原始对象没有任何关联。
using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary;  [Serializable] public class MyClass {     public int MyProperty { get; set; } }  public class DeepCopyExample {     public static T DeepCopy<T>(T obj)     {         using (MemoryStream stream = new MemoryStream())         {             IFormatter formatter = new BinaryFormatter();             formatter.Serialize(stream, obj);             stream.Seek(0, SeekOrigin.Begin);             return (T)formatter.Deserialize(stream);         }     }      public static void Main()     {         MyClass originalObject = new MyClass { MyProperty = 42 };         MyClass copiedObject = DeepCopy(originalObject);          Console.WriteLine($"Original Object: {originalObject.MyProperty}");         Console.WriteLine($"Copied Object: {copiedObject.MyProperty}");     } } 

在上面的代码中,DeepCopy方法接受一个泛型参数T,并将输入对象序列化为字节数组,然后再反序列化为一个新的对象。最后输出原始对象和深拷贝后的对象的属性值。

通过这种方法可以实现深拷贝,确保新对象与原始对象完全独立,没有任何引用关系。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!