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

标签 c#

我不是每天都阅读 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/

相关文章:

c# - 行过滤器中的多个参数

c# - 加密 AES 256 输入明文长度问题

c# - 用于匹配复杂的多对多关系的 Linq 表达式

c# - 我可以自动将代码和新类放入我的解决方案的很多部分吗?

c# - 按日期值排序列表

c# - 如果字符串在 .NET 中是不可变的,那么为什么 Substring 需要 O(n) 时间?

c# - 如何停止线程?

c# - 有没有办法生成 WMI 代码/类?

c# - WPF App,在打开窗口之前运行异步任务

c# - 我应该如何继承IDisposable?