我有 3 个不同的类,一个通用的“实体”类,然后是两个继承它的类,一个子弹类和一个敌人类。
然后我有一个实体类的列表,列表中包含子弹和敌人,以及很多我对待这些相同的地方。但是,有时,我只想遍历其中一个类,而不是其他类,例如遍历每个子弹,而不是敌人。有没有办法做到这一点?
我试过
foreach (Bullet tempBullet in entities)
但我得到了错误
无法将“敌人”类型的对象转换为“子弹”类型。
任何人都知道这是否可能,还是我必须使用单独的列表?
我有 3 个不同的类,一个通用的“实体”类,然后是两个继承它的类,一个子弹类和一个敌人类。
然后我有一个实体类的列表,列表中包含子弹和敌人,以及很多我对待这些相同的地方。但是,有时,我只想遍历其中一个类,而不是其他类,例如遍历每个子弹,而不是敌人。有没有办法做到这一点?
我试过
foreach (Bullet tempBullet in entities)
但我得到了错误
无法将“敌人”类型的对象转换为“子弹”类型。
任何人都知道这是否可能,还是我必须使用单独的列表?
您可能可以使用一点 Linq:
foreach (var bullet in entities.OfType<Bullet>())
{
}
如果您使用的是 .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
}