例如,我有一个基类Entity
,然后派生自此的两个子类,LightEntity
和 PlayerEntity
.
然后我有一个 List<Entity> Entities
拥有 LightEntity
s 和 PlayerEntity
我希望获得所有 LightEntity
来自 Entities
.
我试过:
List<LightEntity> lights = new List<LightEntity>();
foreach (Entity ent in Entities)
{
if(ent is LightEntity)
{
lights.Add(ent);
}
}
但它不喜欢这样,因为编译器似乎仍然认为它可能会尝试只添加一个 Entity
。到 LightEntity
的列表.
我试着投 ent
至 LightEntity
但是编译器说它没有转换 Entity
的方法到 LightEntity
.
最佳答案
你可以使用 OfType
按类型过滤实体:
List<LightEntity> lights = new List<LightEntity>();
lights.AddRange(entities.OfType<LightEntity>());
或者更简单:
List<LightEntity> lights = entities.OfType<LightEntity>().ToList();
延伸阅读
关于c# - 遍历具有相同基类的对象列表并提取某个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16471397/