【发布时间】:2017-05-23 19:13:32
【问题描述】:
首先,我创建基类和继承类
public class Entity
{
public int EntityID;
public EntityType type = EntityType.NONE;
}
public class EntityObject : Entity
{
public Vector2 position;
public EntityObject()
{
position = Vector2.Zero;
type = EntityType.OBJECT;
}
}
然后我创建基类列表来存储所有继承的类
List<Entity> entityList = new List<Entity>();
entityList.Add(new EntityObject());
稍后,我尝试访问列表中继承类的成员
for(int i = 0; i < entityList.Count; i++)
if(entityList[i].type == EntityType.OBJECT)
entityList[i].position = Vector2.One;
是的,我收到一个错误:“实体”不包含“位置”的定义,并且找不到接受“实体”类型的第一个参数的扩展方法“位置”(您是否缺少 using 指令或汇编参考?)
有没有办法从基类列表中访问继承的类属性?
【问题讨论】:
-
一个单独的考虑是当您只需要
IEnumerable实现时,您使用相对重量级的List类。