【问题标题】:c# how to check if an object is of a certain typec#如何检查一个对象是否属于某种类型
【发布时间】:2014-04-15 15:00:37
【问题描述】:

我只是想知道检查某物的对象类型的过程是什么。

基本上我有一个父对象数组,我想检查其中一个对象是否属于特定的子类型。

更具体地说,我想检查 GameScreen 对象数组是否包含 GameplayScreen 类型的 GameScreen 对象。

        GameScreen[] screens = mScreenManager.GetScreens();

        // loop through array and check if the object equals gameplayscreen


        }

【问题讨论】:

  • 这几乎总是错误的做法。如果您将拥有一个父对象的集合,则父类型应该具有您需要用于该集合中的每个对象的任何成员。您应该依赖多态性,以使每个项目都能适当地运行,而无需知道其类型是什么。

标签: c# arrays object xna equals


【解决方案1】:

您可以使用is operator 来检查类型,例如:

if(screens[0] is GamePlayScreen)

或者,如果您只需要数组中的 GamePlayScreen 类型对象,您可以使用:

GamePlayScreen[] items = screens.OfType<GamePlayScreen>().ToArray();

请参阅:Enumerable.OfType。它使用System.Linq

【讨论】:

  • GameScreens 类型的数组 GamePlayScreen 类型是否可能存在,我无法理解您的逻辑,请您为我解释一下
  • 但是你的回答很棒学到了新东西..希望我记住了..:)
【解决方案2】:

要检查类型时,请使用 is 关键字。

class Foo {}
class SuperFoo : Foo {}

bool IsSuperFoo(Foo foo)
{
    if (Foo is SuperFoo) return true;
    return false;
}

您可以对 GamePlayScreen 执行相同操作。

【讨论】:

    猜你喜欢
    • 2011-03-25
    • 1970-01-01
    • 2011-09-28
    • 2010-10-31
    • 2012-10-02
    • 2016-11-01
    • 2011-09-10
    • 2011-02-05
    • 2012-06-21
    相关资源
    最近更新 更多