[英]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.