一尘不染

如何在.NET中进行对象的深层复制?

c#

我想要一个真正的深复制。在Java中,这很容易,但是如何在C#中实现呢?


阅读 260

收藏
2020-05-19

共1个答案

一尘不染

我已经看到了几种不同的方法,但是我使用了一种通用的实用方法:

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]可正常使用。
  • 您的源文件必须包含以下代码:
    using System.Runtime.Serialization.Formatters.Binary;
    

    using System.IO;

2020-05-19