c# - 如何在 C# 中的基类型列表中使用 Foreach

标签 c# generics foreach

我的每个 Tiles 中都有一个名为“Within”的 GameObject 类型列表。

List<GameObject> Within = new List<GameObject>();

GameObject 具有BeeFlowerTree 类型的派生类。

我正在做一个 foreach,它应该检测列表中的所有蜜蜂并选择或取消选择它们。

foreach (Bee bee in Tile.Within)
{
    bee.selected = !bee.selected;
}

问题是,当我这样做时,如果列表中有一个类型为 FlowerTree 的对象,我会得到一个异常:

"Unable to cast object of type 'WindowsGame2.Flower' to type 'WindowsGame2.Bee'."

我以为 foreach 会在我们调用它时忽略所有不符合描述的对象,但它不会......我怎样才能让它工作?

最佳答案

在 foreach 中使用 LINQ 过滤怎么样?

foreach (Bee bee in Tile.Within.OfType<Bee>())
{
    bee.selected = !bee.selected;
}

这只会选择蜜蜂的,不会选择花或树。

关于c# - 如何在 C# 中的基类型列表中使用 Foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8341270/

相关文章:

c# - OData(创建自定义)查询选项

c# - 使用新的 Azure.messaging.servicebus 获取事件消息计数

c# - 区分类泛型类型参数和方法泛型类型参数

c# - 在 C# 元组中使用 Int64

java - 避免在基于通用工厂的 MVP 框架中进行强制转换

java - 使用 foreach 在 Java 中迭代并行数组的好方法

php - 为什么 foreach 只在数组中创建一个值?

c# - 在 asp.net 和 c# 中上传文件

c# - ArgumentOutOfRange 异常 C#

javascript - 从循环中的值创建一个新数组,然后对新数组中的所有值求和