【发布时间】:2011-02-08 13:59:23
【问题描述】:
我有一个清单:
private readonly IList<IList<GameObjectController>> removeTargets;
private readonly IList<IList<GameObjectController>> addTargets;
PickUp 继承自 GameObjectController。但是当我尝试这个时:
public IList<PickUp> Inventory
// ...
gameObjectManager.MoveFromListToWorld(this, user.Model.Inventory);
// ...
// This queues everything up to be removed, until ProcessMoves...() is called
public void MoveFromWorldToList(GameObjectController removedFromWorld, IList<GameObjectController> addTarget)
{
toBeRemoved.Add(removedFromWorld);
addTargets.Add(addTarget);
}
// ...
/// <summary>
/// Removes all the GameObjects on which removal is requested from the world.
/// </summary>
public void ProcessMovesFromListToWorld()
{
for (int i = 0; i < toBeAdded.Count; i++)
{
GameObjectController moved = toBeAdded[i];
addGameObjectToWorld(moved);
if (removeTargets[i] != null)
{
removeTargets[i].Remove(moved);
}
}
toBeAdded.Clear();
removeTargets.Clear();
}
我得到一个编译器错误:
无法从 'System.Collections.Generic.IList
' 到 'System.Collections.Generic.IList '
为什么会发生这种情况?这不是很好吗,因为PickUp 是GameObjectController 的子类?我需要像 Java 的 Map<E extends GameObjectController> 这样的东西吗?
早些时候,我遇到了类似的问题,我试图将 inventory 从 IList 隐式转换为 ICollection。这是同样的问题吗?
【问题讨论】:
-
签名
MoveFromListToWorld?