尝试检查button.content.utputs false何时为true(tic-tac-toe简单游戏)



我正在创建TIC-TAC-TOE简单游戏,所有这些都可以正常工作直到检查按钮内容,并且我遇到了问题:

即使按钮的内容正确,它也总是返回false。

我尝试更改为字符串(内容和'x'或'0'( - 不起作用button.content应该是对象

if ((buttons[0].Content == (object)'x' || buttons[0].Content==(object)'0') &&(buttons[3].Content == (object)'x' || buttons[3].Content == (object)'0')
               && (buttons[6].Content == (object)'x' || buttons[6].Content == (object)'0'))
            {
                MessageBox.Show("You have won", "Tic-tac-toe");
                this.Close();
            }

我希望使用真实输出进行检查,以便游戏完成。

System.CharValueType。因此,当您将其施放到System.Object时,CLR创建了此对象的副本并将其存储在托管堆上。此方法称为拳击。(在MSDN:https://learn.microsoft.com/en-us/dotnet/csharp/csharp/programming-guide/types/boxing-and--unboxing上了解更多信息(。

因此,您有两个不同的 System.Object实例:第一个存储在 Button.Content属性中,第二个是通过铸件获得的。然后,您将==操作员应用于这些实例。当它发生时,CLR试图比较操作数的参考。但是正如我已经说过的那样,您有两个不同的对象,因此,正如预期的那样,其参考文献并不相等。这就是为什么您得到false的原因。

为了解决您的问题,我建议您尝试将Button.Content施加到System.Char,反之亦然。或使用System.String代替System.Char作为按钮的内容。因为System.String是参考类型。

最新更新