asign null到变量的布尔结果是什么

Jua*_*eza 0 c# comparison null

我几乎可以肯定这两个代码是等价的,但不确定原因.

首先是我通常如何做,我认为安全和更可读的方式.

string userLine = Console.ReadLine();

while (userLine != null) {
    // do things with userLine
    userLine =  Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

第二个有效,但不确定原因.因为我将一个assigment比较为null.

string userLine;

while ((userLine =  Console.ReadLine()) != null) {
    // do things with userLine
}
Run Code Online (Sandbox Code Playgroud)

Hab*_*bib 5

我相信您认为赋值操作不返回任何值或返回Boolean值.这是不正确的.

请参阅:=运营商

赋值运算符(=)将其右侧操作数的值存储在由其左侧操作数表示的存储位置,属性或索引器中,并将该值作为结果返回.

所以你的陈述

while ((userLine =  Console.ReadLine()) != null) {
Run Code Online (Sandbox Code Playgroud)

Console.ReadLine结果中获取值userLine并返回相同的值,并与之进行比较null.