不能隐式地将类型'int'转换为'bool',我不明白

时间:2014-11-18 00:58:52

标签: c# int boolean

我试图用球和蝙蝠创造一个砖破坏者类型的游戏。我正在努力让球像蝙蝠一样反射蝙蝠,但我正在尝试的方式似乎是错误的,或者是我不太了解的事情:

private int x;
private int batx;
if (x = batx)

出现的消息无法隐式转换类型' int'到了布尔'

我刚刚开始使用C#,所以我真的不明白该怎么做。还有另一种方法可以让球从球拍中反射出来吗?

2 个答案:

答案 0 :(得分:4)

ekad在这里给出了正确答案,但由于这是学习的机会:

if语句在括号内需要bool值,这就是为什么你可以这样做的原因:

if (true)

if (false)

但是

if (1)

没有任何意义。当您执行比较==)时:

if (a == b)

ab进行等效比较,语句将评估为truefalse。这可能对你有意义了。

但是,

分配=)也会计算为一个值,该值是左操作数的值。返回的类型是左操作数的类型。

batx = 5;
if (x = batx) {

基本上评估为

if (5)

正如之前所说的那样,没有意义(无论如何,在C#中 - 这在C中确实有意义)。我输入所有内容的原因是它解释了你得到的编译器错误。

无法隐式转换类型' int'到' bool'

编译器期望找到一个在括号内求值为bool的语句。相反,它找到了一个评估为int的语句。

答案 1 :(得分:2)

这就是您的错误所在,您在= Operator的条件下使用if block

if (x = batx)

条件(x = batx)应该是布尔值,因此您应该使用== Operator而不是

if (x == batx)