c# - 从列表中选择某种类型的元素 (c#)

标签 c# list oop

我的主类中有一个“陷阱”列表。在子类“火焰”中,我想从该列表中删除某些元素。问题是,如何选择这些元素? Trap 确实有其他具有不同属性的子类。

这是我到目前为止得到的(代码简化,来自“Flame.cs”):

public override Boolean collide()
{
    var flames = form1.traps.Where(trap => trap.ID == ID);
    foreach (Flame f in flames)
    {
        if (f.pos > pos)
        {
            form1.traps.Remove(f);
        }
    }
    return true;
}

我觉得我应该知道这一点,但我被卡住了:/

最佳答案

您可以使用 OfType扩展方法。

public override Boolean collide()
{
    var flames = form1.traps.Where(trap => trap.ID == ID)
                            .OfType<Flame>()
                            .Where(f => f.pos > pos)
                            .ToList();

    foreach (Flame flame in flames)
    {
        form1.traps.Remove(flame);
    }

    return true;
}

关于c# - 从列表中选择某种类型的元素 (c#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17263768/

相关文章:

c# - Unity 5.2.2 将 Visual Studio 改回 MonoDevelop

c# - 从特定索引中列出 AddRange?

java - 使用 PageFactory.initElements 在父类中初始化子类 Web 元素

c++ - 有没有办法知道在 C++ 中调用对象方法的类的名称?

Python 字数统计不起作用

php - 如何描述 3 个项目之间的石头剪刀布关系?

c# - listView ItemSelectionChanged 'Is Selected' 没有按预期工作?

c# - 对于 ModelState 无效的项目,不会显示验证消息

c# - 从 winforms 应用程序到 Azure SQL 的安全连接字符串

r - 如何将大列表中的 Entrez id 转换为基因符号并替换 R 中列表中的 entrez id?