如何在.NET中执行对象的深层复制(特别是C#)?

如何在.NET中执行对象的深层复制(特别是C#)?

我想要一个真正的深拷贝。在Java中,这很简单,但是你如何在C#中做到这一点?



摇曳的蔷薇
浏览 1202回答 3
3回答

红颜莎娜

以Kilhoffer的解决方案为基础......使用C#3.0,您可以创建一个扩展方法,如下所示:public&nbsp;static&nbsp;class&nbsp;ExtensionMethods{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Deep&nbsp;clone &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;T&nbsp;DeepClone<T>(this&nbsp;T&nbsp;a) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using&nbsp;(MemoryStream&nbsp;stream&nbsp;=&nbsp;new&nbsp;MemoryStream()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryFormatter&nbsp;formatter&nbsp;=&nbsp;new&nbsp;BinaryFormatter(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formatter.Serialize(stream,&nbsp;a); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stream.Position&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(T)&nbsp;formatter.Deserialize(stream); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}}它扩展了使用DeepClone方法标记为[Serializable]的任何类MyClass&nbsp;copy&nbsp;=&nbsp;obj.DeepClone();
打开App,查看更多内容
随时随地看视频慕课网APP