加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 00:01:33 所属栏目:百科 来源:网络整理
导读:我在每个Tiles中都有一个名为“Within”的GameObject类型列表. ListGameObject Within = new ListGameObject(); GameObject派生出类型为Bee,Flower和Tree的类. 我正在做一个foreach,应检测列表中的所有蜜蜂,并选择或取消选择它们. foreach (Bee bee in Tile.
我在每个Tiles中都有一个名为“Within”的GameObject类型列表.

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

GameObject派生出类型为Bee,Flower和Tree的类.

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

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

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

"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;
}

那将只选择蜜蜂,没有花或树.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读