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

Jon*_*ica 1 c#

我不是每天都阅读C#,并且正在阅读最近提交的东西,这些东西让我感到害怕:

if (( length > maxLength) && ! IsTable(furniture.FurnitureType))
do_something;
Run Code Online (Sandbox Code Playgroud)

我在精神上解析&&和!运营商,特别是因为!运营商之后有一个空间.

问题可以归结为:

是(有空间)

if (( length > maxLength) && ! IsTable(furniture.FurnitureType))
Run Code Online (Sandbox Code Playgroud)

与(没有空格)相同:

if (( length > maxLength) && !IsTable(furniture.FurnitureType))
Run Code Online (Sandbox Code Playgroud)

具体问题是:

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

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

Kob*_*uek 5

在C#中,&&运算符意味着仅在第一个条件为时才检查第二个条件true.

所以,只有当(length > maxLength)true,那么!IsTable(furniture.FurnitureType)情况进行检查.

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

! IsTable(furniture.FurnitureType)
Run Code Online (Sandbox Code Playgroud)

就像:

!IsTable(furniture.FurnitureType)
Run Code Online (Sandbox Code Playgroud)

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

所以,你的整个if条款true只有在length > maxLengthFurnitureType不是一张桌子的情况下.椅子,桌子,壁橱甚至凳子.但不是一张桌子.