我想要一个真正的深拷贝。在 Java 中,这很容易,但在 C# 中如何做到这一点?
BinaryFormatter已被弃用,2023 年 11 月后将不再在 .NET 中可用。请参阅BinaryFormatter 淘汰策略
我已经看到了几种不同的方法,但我使用了一个通用的实用方法:
public static T DeepClone<T>(this T obj) { using (var ms = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(ms, obj); ms.Position = 0; return (T) formatter.Deserialize(ms); } }
笔记:
你的班级必须被标记[Serializable]为这样才能工作。
[Serializable]
您的源文件必须包含以下代码:
using System.Runtime.Serialization.Formatters.Binary; using System.IO;