【问题标题】:Check if object is child of a class检查对象是否是类的子对象
【发布时间】:2018-09-10 14:48:00
【问题描述】:

我想知道某个对象是否属于某个类型的子类。我有 3 个类:ParticipantHuman : ParticipantAI : Participant,其中实例的实现方式如下:

Participant player1 = new Human();

Participant player2 = new AI();

我在participants[2]{ player1, player2 }; 和一个变量currentParticipant 中有这些玩家,用于跟踪轮到谁。

我想检查participants[currentParticipant] 是否属于AI 类型,我已经这样做了:

private void CheckParticipantsTurn(int currentParticipant)
    {
        if(participants[currentParticipant] is AI)
        {
            participants[currentParticipant].AiMove(); //currently empty
            MessageBox.Show("Ai moved");
        }
        ChangeCurrentParticipant(currentParticipant); //switches current participant
    }

但是,它似乎从未将 player2 视为 AI - 它将其视为参与者。

问题:

如何检查 player2 的类型是否为 AI,而不是 Participant?

【问题讨论】:

  • player2 is AI
  • currentParticipant 对 AI 有什么价值?您是否调试过代码并检查变量和数组中的值是否正确。
  • 不可能。请发布一个完整的示例。
  • 据我所知,AI 约束什么并不重要。它也不知道currentParticipant 是什么,我只是无法“找到”当前玩家的类/类型,唯一有效的是is Player,这通常违背了检查的目的。我只需要检查player2 是否属于AI 类型,仅此而已。它使用@Hitesh P 的方法工作(检查答案)。

标签: c# class inheritance typeof


【解决方案1】:

您可以检查是否 (参与者[currentParticipant].GetType() == typeof(AI))

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 2010-12-23
    • 2022-11-09
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多