Поднято прямо из C # 3.0 в двух словах :
Когда узел или атрибут добавляется к элементу (с помощью функциональной конструкции или метода Add), для этого элемента устанавливается свойство Parent узла или атрибута. Узел может иметь только один родительский элемент: если вы добавляете уже родительский узел ко второму родительскому элементу, он автоматически подвергается глубокому клонированию. В следующем примере каждый клиент имеет отдельную копию адреса:
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
Это автоматическое дублирование сохраняет объект X-DOM без побочных эффектов - еще один признак функционального программирования.