
This question already has an answer here:
- Deep cloning objects 37 answers
我想要一个真正的深层复制。在Java中,这很容易,但是你怎么在C#中做到这一点?
我已经看到了一些不同的方法,但是我使用了一个通用的实用方法:
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);
}
}
笔记:
你的课必须被标记为[Serializable]为了这个工作。 您的源文件必须包含以下代码:
使用System.Runtime.Serialization.Formatters.Binary; 使用System.IO;
我写了一个深入的对象副本扩展方法,基于递归的“MemberwiseClone”。它速度快(比BinaryFormatter快三倍),并且适用于任何对象。您不需要默认的构造函数或可序列化的属性。
未经作者同意,本文严禁转载,违者必究!




近期评论