【发布时间】:2018-09-10 14:48:00
【问题描述】:
我想知道某个对象是否属于某个类型的子类。我有 3 个类:Participant、Human : Participant 和 AI : 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