在C#中,要执行对象的深层复制,可以使用序列化和反序列化的方法。以下是一个简单的示例,说明如何使用BinaryFormatter
类实现深层复制:
[Serializable]
属性标记类。using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class MyClass
{
public int MyProperty { get; set; }
}
public static T DeepClone<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T)formatter.Deserialize(ms);
}
}
DeepClone
方法创建对象的深层复制:var original = new MyClass { MyProperty = 42 };
var cloned = DeepClone(original);
Console.WriteLine(original.MyProperty); // 输出 42
Console.WriteLine(cloned.MyProperty); // 输出 42
original.MyProperty = 100;
Console.WriteLine(original.MyProperty); // 输出 100
Console.WriteLine(cloned.MyProperty); // 输出 42
请注意,这种方法可能不适用于所有类型的对象,尤其是那些不支持序列化的对象。在这种情况下,您可能需要手动实现深层复制。
推荐的腾讯云相关产品:
这些产品都可以与.NET应用程序集成,以便您可以轻松地在C#中实现深层复制。
领取专属 10元无门槛券
手把手带您无忧上云