溫馨提示×

C#object如何實現深拷貝

c#
小樊
149
2024-07-08 20:06:19
欄目: 編程語言

在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,并將輸入對象序列化為字節數組,然后再反序列化為一個新的對象。最后輸出原始對象和深拷貝后的對象的屬性值。

通過這種方法可以實現深拷貝,確保新對象與原始對象完全獨立,沒有任何引用關系。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女