Mat*_*ern 6 c# inheritance class object
例如,我有一个基类Entity,然后是两个派生自此的子类,LightEntity和PlayerEntity.
然后List<Entity> Entities,我有一个持有LightEntitys和PlayerEntitys.
我希望得到所有LightEntity从s Entities.
我试过了:
List<LightEntity> lights = new List<LightEntity>();
foreach (Entity ent in Entities)
{
if(ent is LightEntity)
{
lights.Add(ent);
}
}
Run Code Online (Sandbox Code Playgroud)
但它并不喜欢这样,因为编译器似乎仍然认为它可能会尝试仅添加Entity一个列表LightEntity.
我试图转向ent,LightEntity但编译器说它没有将Entitya 转换为a的方法LightEntity.
p.s*_*w.g 13
您可以使用OfType按类型过滤实体:
List<LightEntity> lights = new List<LightEntity>();
lights.AddRange(entities.OfType<LightEntity>());
Run Code Online (Sandbox Code Playgroud)
甚至更容易:
List<LightEntity> lights = entities.OfType<LightEntity>().ToList();
Run Code Online (Sandbox Code Playgroud)
进一步阅读