我想在遍历集合时删除对象,但是我遇到了异常。我该怎么做呢? 这是我的代码:
foreach (var gem in gems)
{
gem.Value.Update(gameTime);
if (gem.Value.BoundingCircle.Intersects(Player.BoundingRectangle))
{
gems.Remove(gem.Key); // I can't do this here, then How can I do?
OnGemCollected(gem.Value, Player);
}
}
foreach (var gem in gems.ToList())
。该语句的意思是对于gems.ToList()
中的每一个元素,使用变量gem
进行循环遍历。 - I4VDictionary
实现了IEnumerable<>
接口(这就是为什么你可以通过它进行foreach
循环)。ToList
是一个 LINQ 扩展方法,如果你添加了using System.Linq;
命名空间引用,它应该能够使用。 - Tim S.ToList()
可以工作,因为它生成KeyValuePair
列表,而不是Gem
的列表。 - Matthew Watson