您可以在迭代时从 List 中删除项目吗?这会起作用,还是有更好的方法来做到这一点?我的代码:foreach (var bullet in bullets) { if (bullet.Offscreen()) { bullets.Remove(bullet); } }-edit- 抱歉各位,这是一个silverlight 游戏。我没有意识到 Silverlight 与 Compact Framework 不同。 最佳答案 编辑:澄清一下,问题是关于 Silverlight ,它显然不支持RemoveAll on List`T。它在 full framework, CF, XNA versions 2.0+ 中可用您可以编写一个表示删除条件的lambda:bullets.RemoveAll(bullet => bullet.Offscreen());或者您可以选择您想要的,而不是删除您不需要的:bullets = bullets.Where(b => !b.OffScreen()).ToList();或者使用索引器在序列中向后移动:for(int i=bullets.Count-1;i>=0;i--){ if(bullets[i].OffScreen()) { bullets.RemoveAt(i); }}关于c# - 你能在 C# 中迭代​​时从 List<> 中删除一个项目吗,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1541777/
10-11 02:01