无法隐式地将类型“int”转换为“bool”,我不明白
本文关键字:转换 bool 明白 int 类型 | 更新日期: 2023-09-27 18:30:56
我正在尝试创建一个带有球和球棒的砖块破坏类型游戏。我正在努力让球像墙壁一样从球棒反射出来,但我尝试的方式似乎是错误的,或者我不太明白:
private int x;
private int batx;
if (x = batx)
出现消息无法隐式将类型"int"转换为"bool"
我刚开始 C#,所以我真的不知道该怎么做。 有没有其他方法可以让球从球棒反射出来?
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
。 相反,它找到了一个计算结果为 int
的语句。
这是你的错误所在,你在 if 块的情况下使用 = 运算符
if (x = batx)
条件 ( x = batx
) 应该是布尔值,所以你应该使用 == 运算符
if (x == batx)