嗨,不幸的是,我没有相应的链接,但我最近读了一些c#作弊表。其中一个人说,在使用for
或foreach
进行迭代时,不会从列表中删除对象。实际上,编译器甚至不允许您在foreach
中迭代它时从列表中删除对象。但是你可以在for
循环中轻松完成。
假设我有一个接口IEnemy
,它有一个返回boolean
的方法。
public interface IEnemy
{
bool IsDead();
}
在其他一些课程中,我有一个列表List<IEnemy> enemies;
。现在这就是我如何从列表中删除所有死亡的敌人:
public void RemoveDead(List<IEnemy> enemies)
{
for (int i = 0; i < enemies.Count;i++ )
{
if(enemies[i].IsDead() == true)
{
enemies.Remove(enemies[i]);
}
}
}
但正如这张备忘单所说这是不好的做法。那怎么会这样做呢?我猜这可以通过一些LINQ语句,Lambda表达式完成吗?这是不是真的,这不应该在for
- 循环中完成?