【发布时间】:2013-05-04 11:55:33
【问题描述】:
例如,我有一个基类Entity,然后是从它派生的两个子类LightEntity 和PlayerEntity。
然后我有一个List<Entity> Entities,其中包含LightEntitys 和PlayerEntitys。
我希望从Entities获得所有LightEntitys。
我试过了:
List<LightEntity> lights = new List<LightEntity>();
foreach (Entity ent in Entities)
{
if(ent is LightEntity)
{
lights.Add(ent);
}
}
但它不喜欢这样,因为编译器似乎仍然认为它可能会尝试将 Entity 添加到 LightEntity 列表中。
我尝试将ent 转换为LightEntity,但编译器说它没有将Entity 转换为LightEntity 的方法。
【问题讨论】:
-
我想告诉你原因。在 c# 中,不允许隐式向下转换。这意味着您必须继续进行显式转换,这会告诉 CLR 在我的情况下进行这种向下转换是安全的。
标签: c# class object inheritance