嗨,不幸的是,我没有相应的链接,但我最近读了一些c#备忘单.其中一个人说在使用for或迭代时不会从列表中删除对象foreach.实际上,编译器甚至不允许您在列表中删除对象时从列表中删除对象foreach.但你可以轻松地在一个for循环中做到这一点.
假设我有一个接口IEnemy,它有一个返回a的方法boolean.
public interface IEnemy
{
bool IsDead();
}
Run Code Online (Sandbox Code Playgroud)
在其他一些课程中,我有一个清单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]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但正如这张备忘单所说这是不好的做法.那怎么会这样做呢?我猜这可以通过一些LINQ语句,Lambda表达式完成吗?这是不是真的,这不应该在for-loops中完成?