我不认为我正在修改这个系列

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正在循环,因此我的困惑.有人可以向我解释一下吗?谢谢.

SLa*_*aks 7

newContents = Contents;
Run Code Online (Sandbox Code Playgroud)

您现在有两个指向同一集合的变量.

您可能希望通过编写来复制集合new List<Item>(Contents).