【发布时间】:2012-02-22 16:44:48
【问题描述】:
代码:
List<Item> Contents = ObjectHandler.player.Contents.ToList<Item>() //Was HashTable
List<int> IDS = new List<int>(); //Holds Item IDs for later counting
foreach (Item I in Contents)
{
IDS.Add(I.ID); // Add ID to IDS
}
List<Item> newContents = Contents;
foreach (Item I in Contents)
{
if (IDS.Contains(I.ID)) //Check if the ID has already been used in Contents
{
newContents.Remove(I); //Remove it
}
}
Contents = newContents;
此代码 sn-p 应准备一个 ID 列表以供以后计数,并从项目列表中删除重复项。但是,一旦 Contents 中出现项目,我就会收到 InvalidOperationException。我相当确定我没有修改 foreach 正在循环的内容,因此我很困惑。有人可以向我解释一下吗?谢谢。
【问题讨论】:
-
顺便说一句,这将删除所有项,而不仅仅是重复项。
标签: c# list object collections