C#object如何实现深拷贝

   2024-10-07 2590
核心提示:在C#中实现深拷贝的方法有很多种,以下是其中一种方法:使用序列化和反序列化:将对象序列化为字节数组,然后再将字节数组反序列

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

使用序列化和反序列化:将对象序列化为字节数组,然后再将字节数组反序列化为一个新的对象。这样可以创建一个完全独立的对象,与原始对象没有任何关联。
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,并将输入对象序列化为字节数组,然后再反序列化为一个新的对象。最后输出原始对象和深拷贝后的对象的属性值。

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

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号