C# 无法将int隐式转换为bool

C# 无法将int隐式转换为bool,c#,while-loop,C#,While Loop,问题出在第19行。我原以为是while语句,但注意到它的第19行。我尝试过各种方法,但我找不到解决错误的方法 using System; class MainClass { public static void Main (string[] args) { Random r = new Random(); int Randomnum= r.Next(0,100); int x = 0; while(x != Randomnum){

问题出在第19行。我原以为是while语句,但注意到它的第19行。我尝试过各种方法,但我找不到解决错误的方法

using System;

class MainClass {
  public static void Main (string[] args) {
      Random r = new Random();
      int Randomnum= r.Next(0,100);
      int x = 0;

      while(x != Randomnum){
          x = Convert.ToInt32(Console.ReadLine()); 

          if (x < Randomnum)
          Console.WriteLine("higher");

          if (x > Randomnum)
          Console.WriteLine("lower");
       
          if (x = Randomnum)
          Console.WriteLine("corrct!");
      }
  }
}
使用系统;
类主类{
公共静态void Main(字符串[]args){
随机r=新随机();
int Randomnum=r.Next(0100);
int x=0;
while(x!=Randomnum){
x=Convert.ToInt32(Console.ReadLine());
if(xRandomnum)
控制台。写线(“下”);
如果(x=Randomnum)
控制台。WriteLine(“correct!”);
}
}
}
它的语法问题 如果(x=Randomnum) 使用双等号进行比较 如果(x==Randomnum) single equal用于赋值,这就是为什么if条件没有收到bool值并显示此错误。

其语法问题 如果(x=Randomnum) 使用双等号进行比较 如果(x==Randomnum)
single equal用于赋值,这就是为什么if condition没有收到bool值并显示此错误。

看起来您遇到了Nauman提到的语法问题。相等运算符(=)是比较运算符,用于检查它们的操作数是否相等,并且相等运算符(=)比较字符串的内容。==运算符比较引用标识,而=方法仅比较内容


将if
(x=Randomnum)
更改为if
(x==Randomnum)
,它应该可以工作。

看起来您有一个像Nauman提到的语法问题。相等运算符(=)是比较运算符,用于检查它们的操作数是否相等,并且相等运算符(=)比较字符串的内容。==运算符比较引用标识,而=方法仅比较内容


将if
(x=Randomnum)
更改为if
(x==Randomnum)
,它应该可以工作。

最后一个条件有一个
=
(赋值)而不是两个
=
(比较)
更正
->
更正
,抱歉。没问题!我自己没注意到,谢谢。我不明白为什么一个19是奇怪的。其他两条if语句可以正常工作,但如果x=randomnum:/@OliverSharp,则不行,因为
x=randomnum
是一个赋值。c#中的赋值总是返回赋值。在您的例子中,是一个整数,不能用作
if
子句中的条件。您需要比较运算符
x==Randomnum
(double==)上一个条件有一个
=
(赋值)而不是double
=
(比较)
correct
->
correct
,很抱歉。很好!我自己没注意到,谢谢。我不明白为什么一个19是奇怪的。其他两条if语句可以正常工作,但如果x=randomnum:/@OliverSharp,则不行,因为
x=randomnum
是一个赋值。c#中的赋值总是返回赋值。在您的例子中,是一个整数,不能用作
if
子句中的条件。您需要
x==Randomnum
(double==)作为比较运算符