我不是每天都阅读 C#,而是正在阅读最近的提交,其中包含一些让我感到困惑的内容:
if (( length > maxLength) && ! IsTable(furniture.FurnitureType))
do_something;
我在精神上解析 && 和 !运营商,特别是因为 !运算符后面有一个空格。
问题可以提炼为:
是(带空格)
if (( length > maxLength) && ! IsTable(furniture.FurnitureType))
与(无空格)相同:
if (( length > maxLength) && !IsTable(furniture.FurnitureType))
具体问题是:
- IsTable() 是否改变了评估?
- 后面是空格!基本上让第一个评估完成所有工作?
或者,关于可接受的语法,我是否遗漏了什么。
最佳答案
在 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
不是一张 table 。一把椅子、一张 table 、一个壁橱甚至一张凳子。但不是 table 。
关于C#:周围有空格!运营商,如何解读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46042025/