Gav*_*ann 1 c# collections list object
码:
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;
Run Code Online (Sandbox Code Playgroud)
此代码段应准备用于以后计数的ID列表,并从项列表中删除重复项.但是,只要内容中存在项目,我就会收到InvalidOperationException.我很确定我没有修改内容,foreach正在循环,因此我的困惑.有人可以向我解释一下吗?谢谢.
newContents = Contents;
Run Code Online (Sandbox Code Playgroud)
您现在有两个指向同一集合的变量.
您可能希望通过编写来复制集合new List<Item>(Contents).