sur*_*men 0 c# list unity-game-engine
在我的游戏的库存中,如果你放下它,我想删除它。这仅适用于像这样的 foreach 循环:
public List<Item> items = new List<Item>();
public void DeleteItem(Item itemToRemove)
{
foreach (var item in items)
{
items.Remove(itemToRemove);
}
}
Run Code Online (Sandbox Code Playgroud)
但后来我收到了这个错误:
集合被修改;枚举操作可能无法执行。
当我尝试这个时:
public void DeleteItem(Item itemToRemove)
{
items.Remove(itemToRemove);
}
Run Code Online (Sandbox Code Playgroud)
没发生什么事。有谁知道如何解决这一问题?
要从列表中删除项目,执行以下操作就足够了:
public void DeleteItem(Item itemToRemove)
{
items.Remove(itemToRemove);
}
Run Code Online (Sandbox Code Playgroud)
您实际上不必遍历列表。如果似乎什么也没发生,请检查Remove的返回值。true如果该项目已被删除,或者false在列表中找不到该项目,则它会返回。
关于您收到的错误消息:在枚举列表时,不得通过添加/删除项目来修改列表。这将改变列表的长度,并抛出枚举,所以这是不允许的。