0

我有一个如下所示的 XML 文件:

<Contacts>
    <Person name="James" id"=1" />
    <Person name="Edward" id"=2" />
</Contacts>

我想做点什么,所以如果 ID=2,再创建 10 个 Persons 并更新他们的 ID 和姓名,这样:

if (person.ID == 2)
{
    foreach (var item in duplicatePersons)
    {
        pers.SetAttributeValue("id", item.Key);
        pers.SetAttributeValue("name", item.Value);
        allPersons.Add(pers);
    }
}

duplicatePersons 是一个包含所有重复人员的字典。

问题是,这个 foreach 循环的第一次迭代正在创建:

<Person name="Josh" id"=3" />

在第二次迭代之后,它应该如下所示:

<Person name="Josh" id"=3" />
<Person name="Jacob" id"=4" />

但它看起来像:

<Person name="Jacob" id"=4" />
<Person name="Jacob" id"=4" />

所以第二次迭代更新了第一个和第二个元素。

知道为什么吗?

4

1 回答 1

1

您将所有属性设置为同一个对象实例pers。您应该在循环中创建一个新的 Person 对象

foreach (var item in duplicatePersons)
{
    Person pers = new Person();
    pers.SetAttributeValue("id", item.Key);
    pers.SetAttributeValue("name", item.Value);
    allPersons.Add(pers);
}
于 2012-12-05T10:35:38.813 回答