【发布时间】:2013-06-15 09:30:04
【问题描述】:
我正在尝试使用 C# 制作 2D 游戏(使用与问题无关的 XNA)。我制作了一个基本的瓷砖类,游戏中的所有瓷砖都将从中继承基本功能,例如如何将自己绘制到屏幕上等等。
然后,我拥有的是该基础瓷砖类的列表,其中包含从该基类继承的所有其他类,即:门、墙壁、地板瓷砖等。
List<TileBase> tileList = new List<TileBase>();
...
tileList.Add(new Door(arguments));
tileList.Add(new Wall(arguments));
当我只想影响该列表中的某种类型的类时,问题就会出现。例如,门具有 Open()、Close() 和 Toggle() 的某些函数。 如果我尝试简单地创建一个循环,循环遍历列表中的每个 Door 类:
foreach(Door door in tileList)
{
door.Toggle();
}
我收到一个错误:
"Unable to cast object of type '...Tiles.Wall' to type '...Tiles.Door'."
所以基本上,我有一个包含不同课程的列表。如何在循环中访问类中的特定函数而不会导致程序崩溃,因为它在另一种类型的类上尝试它没有所述函数。
【问题讨论】:
标签: c# list class inheritance crash