检查对象是否是类的子级

时间:2018-03-31 23:29:21

标签: c# class inheritance typeof

我想知道某个对象是否是某个类型的子类。我有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 - 它将其视为参与者。

问题:

如何检查播放器2是否为AI类型,而不是参与者?

1 个答案:

答案 0 :(得分:1)

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