将一个 Xelement 复制到另一个 Xelement,然后操纵较新的 Xelement 也会影响旧的
Copying one Xelement in to another and then Manipulating the newer one is affecting the older also
我正在用另一个 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" 时,它的属性也将被删除。
有什么建议吗?
您所做的只是将原始 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();
}
}
我正在用另一个 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" 时,它的属性也将被删除。 有什么建议吗?
您所做的只是将原始 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();
}
}