谁能解释为什么原始地址 XElement 街道节点会更改?看起来 customer1 持有对地址 XElement 的引用,但 customer2 和 customer3 已复制。
为什么原来的地址变了?(LINQPad 示例)
var address =
new XElement ("address",
new XElement ("street", "Lawley St"),
new XElement ("town", "North Beach")
);
var customer1 = new XElement ("customer1", address);
var customer2 = new XElement ("customer2", address);
var customer3 = new XElement ("customer3", address);
customer1.Element ("address").Element ("street").Value = "Another St";
Console.WriteLine (customer2.Element ("address").Element ("street").Value);
Console.WriteLine ();
address.Dump();
Console.WriteLine ();
customer1.Dump();
Console.WriteLine ();
customer2.Dump();
Console.WriteLine ();
customer3.Dump();
输出
Lawley St
<address>
<street>Another St</street>
<town>North Beach</town>
</address>
<customer1>
<address>
<street>Another St</street>
<town>North Beach</town>
</address>
</customer1>
<customer2>
<address>
<street>Lawley St</street>
<town>North Beach</town>
</address>
</customer2>
<customer3>
<address>
<street>Lawley St</street>
<town>North Beach</town>
</address>
</customer3>