父级的<list>,为每个子类做

0 c# vb.net xna list subclass

所以,我有一个类GameObject,我用它作为许多子类的基础.

class GameObject()
{
    blah;
}

class AmmoBox() : Gameobject()
{
    different blah;
}

class Taco() : GameObject() {very different blah;}
Run Code Online (Sandbox Code Playgroud)

后来我在列表中使用它们,我想为每个子类指定不同的更新/ etc行为.

foreach (AmmoBox a in GameObjects) { }

foreach (Taco t in GameObjects) { }
Run Code Online (Sandbox Code Playgroud)

编译器抛出错误"无法将'GameObject'类型的对象强制转换为'AmmoBox'.我知道这是一个可怜的错误,我该怎么做呢?

Ree*_*sey 5

您可以OfType根据类型使用过滤:

foreach (AmmoBox a in GameObjects.OfType<AmmoBox>()) { }
Run Code Online (Sandbox Code Playgroud)