C# - 你能在通用列表中单独循环遍历类型吗?

Dar*_*ost 2 c# foreach generic-list

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

然后我有一个实体类的列表,列表中的子弹和敌人,以及我对它们进行相同处理的很多地方.但是,有时候,我想循环通过其中一个类,而不是其他类,例如循环通过每个子弹,而不是敌人.有没有办法做到这一点?

我试过了

foreach (Bullet tempBullet in entities)
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误

无法将'Enemy'类型的对象强制转换为'Bullet'.

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

Mat*_*ott 5

你可以使用一点Linq:

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

}
Run Code Online (Sandbox Code Playgroud)