我试图用球和蝙蝠创造一个砖破坏者类型的游戏。我正在努力让球像蝙蝠一样反射蝙蝠,但我正在尝试的方式似乎是错误的,或者是我不太了解的事情:
private int x;
private int batx;
if (x = batx)
出现的消息无法隐式转换类型' int'到了布尔'
我刚刚开始使用C#,所以我真的不明白该怎么做。还有另一种方法可以让球从球拍中反射出来吗?
答案 0 :(得分:4)
ekad在这里给出了正确答案,但由于这是学习的机会:
if
语句在括号内需要bool
值,这就是为什么你可以这样做的原因:
if (true)
和
if (false)
但是
if (1)
没有任何意义。当您执行比较(==
)时:
if (a == b)
将 a
与b
进行等效比较,语句将评估为true
或false
。这可能对你有意义了。
分配(=
)也会计算为一个值,该值是左操作数的值。返回的类型是左操作数的类型。
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)