c# - 如果第一个为假,编译器是否会继续计算一个表达式,其中所有表达式都必须为真?

标签 c# .net boolean-logic

我确定这个问题以前可能已经回答过,所以我很抱歉,但我无法找到合适的搜索词来找到答案。

给定以下代码示例,db.GetRecords().Any() 是否被执行?

string s = "Z";
bool x = s.IndexOfAny(new[] { 'A', 'B' }) > 0 &&
         db.GetRecords().Any();

最佳答案

没有。 &&|| 均由 short-circuit evaluation 求值.这意味着如果 a 为假且 a || 则 a && b 返回 false如果 a 为真,b 返回真,并且在这两种情况下都不会计算 b

如果出于某种原因您不想进行短路评估,您可以使用按位运算符 &|

关于c# - 如果第一个为假,编译器是否会继续计算一个表达式,其中所有表达式都必须为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3997612/

相关文章:

c# - 如何在 C# 中获取 CMD/控制台编码

c# - 关闭主窗口后如何显示新窗口?

c# - 白鲸记的异常(exception)

c# - 如何从枚举创建 IEnumerable

c# - 异常 : No suitable driver found for jdbc:derby:\\serveraddress\db;create=false

c# - 为什么我的 MSI 安装创建的快捷方式每次都重新启动设置过程?

c - 非常困惑的 while 循环条件

c# - 使困惑。 CA1063错了吗? GC.SuppressFinalize(这个)

c++ - 为什么在 C++ 的 if 语句中,所有可能的整数 "true"都在 long int 的范围内,而 0 却不是?

java - 内置逻辑的返回语句