C#:周围的空间!运营商,如何解读?

时间:2017-09-04 17:50:42

标签: c#

我每天都不会阅读C#,并且正在阅读最近提交的一些内容,这些内容让我感到害怕:

if (( length > maxLength) && ! IsTable(furniture.FurnitureType))
do_something;

我无法在心理上解析&&而且!运营商,特别是因为!运营商之后有空格。

问题可以归结为:

是(带空格)

if (( length > maxLength) && ! IsTable(furniture.FurnitureType))

与(没有空格)相同:

if (( length > maxLength) && !IsTable(furniture.FurnitureType))

具体问题是:

  • IsTable(),无论是真还是假,改变评估?
  • 之后的空间!基本上让第一个eval完成所有的工作?

或者,我是否缺少可接受的语法。

1 个答案:

答案 0 :(得分:5)

在C#中,&&运算符表示仅在第一个条件为true时才检查第二个条件。

因此,只有当(length > maxLength)true时,才会检查!IsTable(furniture.FurnitureType)条件。

当C#编译时,它会忽略大多数运算符之后的空格,例如!。所以!之后的空间毫无意义。

! IsTable(furniture.FurnitureType)

就像:

!IsTable(furniture.FurnitureType)

这意味着如果IsTable(furniture.FurnitureType)true,则结果为false,反之亦然。

因此,只有当if且您的true不是表格时,您的整个length > maxLength子句才会FurnitureType。椅子,桌子,壁橱甚至凳子。但不是桌子。