私はそのコンストラクタを使用してオブジェクトのコピーを作成しようとしていますが、コピーの何かを変更すると、元のオブジェクトも変更されます。あなたが私を助けることができる場合、私は感謝するよ、これは私のコードです:コンストラクタを使用してオブジェクトのコピーを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は参照型です。ポインタを値にコピーするだけです。あなたはあなたのオブジェクトの 'ディープコピー'をする必要があります。 – fharreau
@OfirWinegarten:文字列はコピーされません。文字列はまったく同じ参照型です。しかし、文字列は不変であり、 "変更されたとき"の問題を作ります。moot - "文字列を変更する"とは、新しい文字列を作成して割り当てることです。一方、 'ActionXML'を変更することはおそらく、そのプロパティを通して直接行われます。 –