Direkt von C # 3.0 auf den Punkt gebracht :
Wenn einem Element ein Knoten oder Attribut hinzugefügt wird (ob über eine Funktionskonstruktion oder eine Add-Methode), wird die Parent-Eigenschaft des Knotens oder Attributs auf dieses Element festgelegt. Ein Knoten kann nur ein übergeordnetes Element haben: Wenn Sie einem zweiten übergeordneten Knoten einen bereits übergeordneten Knoten hinzufügen, wird der Knoten automatisch tief geklont. Im folgenden Beispiel hat jeder Kunde eine separate Kopie der Adresse:
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);
Diese automatische Vervielfältigung hält die Instanziierung von X-DOM-Objekten frei von Nebenwirkungen - ein weiteres Kennzeichen der funktionalen Programmierung.