2

我有 3 个不同的类,一个通用的“实体”类,然后是两个继承它的类,一个子弹类和一个敌人类。

然后我有一个实体类的列表,列表中包含子弹和敌人,以及很多我对待这些相同的地方。但是,有时,我只想遍历其中一个类,而不是其他类,例如遍历每个子弹,而不是敌人。有没有办法做到这一点?

我试过

foreach (Bullet tempBullet in entities)

但我得到了错误

无法将“敌人”类型的对象转换为“子弹”类型。

任何人都知道这是否可能,还是我必须使用单独的列表?

4

2 回答 2

5

您可能可以使用一点 Linq:

foreach (var bullet in entities.OfType<Bullet>())
{

}
于 2010-10-18T10:06:37.540 回答
1

如果您使用的是 .NET 2:

foreach (Entity ent in entities) {
    Enemy e = ent as Enemy;
    Bullet b = ent as Bullet;

    if (e != null) {
        // process enemy
    }
    else if (b != null) {
        // process bullet
    }
}

或者,使用 linq (并且entities是一个继承的对象IEnumerable<T>):

foreach (Bullet bullet in entities.OfType<Bullet>()) {
    // process bullets only
}
于 2010-10-18T10:07:15.797 回答