Lifted directamente de C# 3.0 in a Nutshell:
Cuando se añade un nodo o atributo a un elemento (ya sea a través de la construcción funcional o un método Add) el nodo o propiedad Parent de atributo se establece en ese elemento. Un nodo puede tener solo un elemento principal: si agrega un nodo ya emparentado a un segundo elemento primario, el nodo se clonará de manera automática. En el siguiente ejemplo, cada cliente tiene una copia separada de dirección:
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);
customer1.Element ("address").Element ("street").Value = "Another St";
Console.WriteLine (
customer2.Element ("address").Element ("street").Value); // Lawley St
Esta duplicación automática mantiene X-DOM objeto instanciación libre de efectos secundarios-otro sello distintivo de la programación funcional.
Daniel - Creo que debería reconsiderar la respuesta aceptada a esta pregunta. –
Hecho- Cambié la respuesta aceptada. –