在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
,并將輸入對象序列化為字節數組,然后再反序列化為一個新的對象。最后輸出原始對象和深拷貝后的對象的屬性值。
通過這種方法可以實現深拷貝,確保新對象與原始對象完全獨立,沒有任何引用關系。