使用=和==将布尔值与布尔变量进行比较有什么区别?

Cod*_*tic 3 c# java if-statement

让我们说如果有一个布尔变量状态.假设状态值为false.

我想知道它们之间有什么区别

if ( status = true )
{
   //block of code
}

if ( status == true )
{
   //block of code
}
Run Code Online (Sandbox Code Playgroud)

我试图通过编写一个示例程序来理解它,第一个if块中的代码被执行,无论值状态是什么(true或false).

对于其他原始类型,如果我只使用一个"="if和为什么它不会在布尔类型的情况下抛出错误,则系统会抛出编译时错误.谢谢.

das*_*ght 21

第一个不是比较,而是一个任务.它编译的原因是它分配了一个布尔值,因此赋值的结果也是一个布尔值.

第一个语句分配status一个新值,并if根据该新值执行(true在您的情况下).第二个语句将当前值status与右侧的值进行比较,并对比较结果起作用.

请注意,是不是一个好主意来比较boolean在Java或boolC#中到truefalse:你可以使用if (status),而不是if (status == true)if (!status)代替if (status == false).然而,这并不适用于可空类型的C#,所以比较bool?truefalse往往是一个好主意.

  • 也.'='将始终执行,因为首先将它指定为true,如果(true)**将变为** (3认同)

ass*_*ias 10

if ( status = true )永远都是真的,因为你先分配truestatus.另一方面,if ( status == true )只有这status是真的.

写它并避免拼写错误或混淆的最好方法是:

if (status) { }
Run Code Online (Sandbox Code Playgroud)