无法隐式地将类型“int”转换为“bool”,我不明白

本文关键字:转换 bool 明白 int 类型 | 更新日期: 2023-09-27 18:30:56

我正在尝试创建一个带有球和球棒的砖块破坏类型游戏。我正在努力让球像墙壁一样从球棒反射出来,但我尝试的方式似乎是错误的,或者我不太明白:

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

出现消息无法隐式将类型"int"转换为"bool"

我刚开始 C#,所以我真的不知道该怎么做。 有没有其他方法可以让球从球棒反射出来?

无法隐式地将类型“int”转换为“bool”,我不明白

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

if语句的括号内需要一个bool值,这就是为什么你可以有这样的东西:

if (true)

if (false)

if (1)

没有任何意义。 当您进行比较(== )时,例如:

if (a == b)

a与等效b进行比较,语句的计算结果为 truefalse 。 这对您来说可能已经有意义了。

但是,赋值=) 的计算结果也为一个值,该值是左操作数的值。 返回的类型是左操作数的类型。

batx = 5;
if (x = batx) {

基本上计算为

if (5)

如前所述,这没有意义(无论如何,在 C# 中 - 这在 C 中确实有意义)。 我输入所有这些的原因是它解释了您得到的编译器错误。

不能将类型"int"隐式转换为"布尔"

编译器希望找到一个语句,该语句的计算结果为括号内的bool。 相反,它找到了一个计算结果为 int 的语句。

这是你的错误所在,你在 if 块的情况下使用 = 运算符

if (x = batx)

条件 ( x = batx ) 应该是布尔值,所以你应该使用 == 运算符

if (x == batx)