繁体   English   中英

如何在c#中使用其构造函数创建对象的副本?

[英]How can I create a copy of an object using its constructor in c#?

我试图使用其构造函数创建对象的副本,但是当我修改副本的某些内容时,原始对象也会被修改。 如果您能帮助我,我将不胜感激,这是我的代码:

public class XMLStructure
{
 public XMLStructure(XMLStructure xmlCopy )
  {
     this.Action = xmlCopy.Action;
     this.Name = xmlCopy.Name;
  }
  public String Name { get; set; }
  public ActionXML Action { get; set; }
}

ActionXML是引用类型,您还需要创建ActionXML的副本。

是网页的链接,解释了引用类型与值类型。

您需要“深度克隆”对象,以避免观察到问题。 多年来,.Net中公认的用于执行此操作的方法已经得到发展。 今天,最简单的选择是将一个对象序列化为JSON字符串,然后从该JSON字符串中合并一个新对象。

var json = JsonConvert.SerializeObject(xmlSourceObject );
var clonedXmlObject = JsonConvert.DeserializeObject<XMLStructure>(json);

较传统的.Net解决方案是实现ICloneable接口。

您需要对ActionXML和该类中的任何其他引用类型变量执行相同的操作(添加构造函数,允许复制)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM