例如,我有一个基类Entity
,然后有两个从此派生的子类LightEntity
和PlayerEntity
。
然后,我有一个List<Entity> Entities
,其中包含LightEntity
和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/