c# - 使用 = 和 == 比较 boolean 值与 boolean 变量有什么区别?

标签 c# java if-statement

假设是否存在 boolean 变量状态。假设 status 的值为 false。

我想知道有什么区别

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

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

我试图通过编写示例程序来理解它,第一个 if block 中的代码会针对任何值状态(真或假)执行。

对于其他基本类型,如果我在 if 中只使用一个“=”,系统会抛出编译时错误,以及为什么在 boolean 类型的情况下它不会抛出错误。谢谢。

最佳答案

第一个不是比较,是赋值。它编译通过的原因是它赋值了一个 boolean 值,所以赋值的结果也是一个 boolean 值。

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

请注意,将 Java 中的 boolean 或 C# 中的 booltruefalse 进行比较绝不是一个好主意code>:你可以使用 if (status) 而不是 if (status == true)if (!status) 而不是 如果(状态 == 假)。但是,这不适用于 C# 中的 nullable 类型,因此将 bool?truefalse 进行比较是通常是个好主意。

关于c# - 使用 = 和 == 比较 boolean 值与 boolean 变量有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14277887/

相关文章:

c - if 语句无条件

c# - 在 NHibernate 中动态更改查询类型

c# - {} 在 linq 结果中

java - 通过 wget 在 Linux 上下载 Java JDK 会显示许可证页面

java - 在我的 Java SFTP 类中,为什么会收到此 java.net.ConnectException?

Python:循环遍历 if 语句的 elif 部分

c# - 调用 C# 类声明之前的方括号中的内容是什么?

c# - 在 Unity 中关闭打开的套接字

java - 有没有更简洁的方法来做到这一点? java IF

if-statement - 将一系列单元格与单个单元格进行比较,然后递增一个值