2016-11-11 39 views
0

我正在製作另一個Xelement。將一個Xelement複製到另一箇中,然後操作較新的Xelement也會影響較舊的另一個元素

但是,當我操縱新的Xelement時,它也正在改變更早的Xelement。

private bool myFunction(List<XElement> jobList) 
{ 
    List<XElement> tempJobList = new List<XElement>(jobList); 
    foreach (XElement elements in tempJobList) 
    { 
    elements.Attribute("someattribute").Remove(); 
    } 
} 

現在,在這之後,如果在檢查「jobList」的時候,它的屬性也會被刪除。 有什麼建議嗎?

回答

2

您所做的只是將原始jobList中的相同元素添加到新的tempJobList,因此兩個列表都指向相同的數據集。這意味着當你操縱一個元素時,你將在兩個列表中改變它。

如果你真的想要一個單獨的對象,那麼你需要克隆該元素,然後將其添加到臨時列表。

private bool myFunction(List<XElement> jobList) 
{ 
    List<XElement> tempJobList = new List<XElement>(); 
    foreach (var element in jobList) 
    { 
     // Take a copy 
     var tempElement = new XElement(element); 
     tempJobList.Add(tempElement); 
    } 

    foreach (XElement elements in tempJobList) 
    { 
     elements.Attribute("someattribute").Remove(); 
    } 
} 
+0

是的,它的工作原理。謝謝@ChrisF。 –

相關問題