我正在学习编程,我需要创建一个贪吃蛇游戏。
在游戏中,有大约5个可能的物品可以被蛇吃掉,因此我决定将每个新的可消耗品(Consumable)
放入一个可消耗品(Consumable)
数组中。
现在我想通过foreach
循环遍历数组并执行以下操作:
foreach (Apple apple in consumables)
{
renderer.DrawApple(apple);
}
然而,当数组中有不同的对象时,例如一个
Apple
和一个SegmentRemover
(这是可能的,因为它们都继承自Consumable
类),编译器也会迭代SegmentRemover
,然后我就会得到一个无效的转换异常。我认为既然我在
foreach
循环中声明只想迭代Apple
对象,那么它应该能够工作。有什么简单的方法来解决这个问题吗?最好不要使用像
var
或typeof
这样的东西,因为我还没有被允许使用它们。
consumables
的类型是什么?你可以使用LINQ来过滤列表吗?如果你能发布Apple
,SegmentRemover
和Consumable
的定义,那将非常有帮助。 - maccetturaOfType<Apple>
序列运算符的答案是个好主意。 - Eric Lippert