c# - C# If语句中条件的执行顺序

标签 c# .net conditional-statements logical-operators short-circuiting

下面有两个 if 语句使用逻辑运算符具有多个条件。逻辑上两者相同,但检查顺序不同。第一个有效,第二个失败。

我提到了 MSDN用于检查条件的执行顺序是否已定义;但我找不到。

考虑以 && 作为逻辑运算符的多重检查条件。是否保证它将始终检查第一个条件,如果不满足第二个条件,则不会被检查?

我以前使用方法 1,效果很好。寻找 MSDN 引用来证实其使用。

更新

引用"short-circuit" evaluation

代码

  List<string> employees = null;  

  if (employees != null && employees.Count > 0)
  {
        string theEmployee = employees[0];
  }

  if (employees.Count > 0 && employees != null)
  {
        string theEmployee = employees[0];
  }

最佳答案

&& 和 ||运营商短路。即:

1) 如果 && 评估其第一个操作数为假,则不会评估其第二个操作数。

2) 如果 ||评估其第一个操作数为真,它不评估其第二个操作数。

这让你可以对对象进行空检查 && 做一些事情,就好像它不为空一样,第二个操作数不被评估。

关于c# - C# If语句中条件的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16711051/

相关文章:

c# - sqlite查询慢,如何优化(使用linq to entities)

c# - 在不解析堆栈的情况下将异常位置获取到 Logger 方法中?

c# - 如何快速删除然后将多个记录插入数据库

c# - 在列表中双击

asp.net - ASP.NET MVC 4 中具有自定义数据库架构的 SimpleMembership

javascript - 使用 Google Closure 进行 JavaScript 条件赋值 : | vs ||

python - 用 numba.jit 编译条件数组需要很长时间

python - 用中值替换 numpy 数组中的零

c# - 创建或寻找 fuslogvw.exe 的替代品,又名 Fusion Assembly Binding Log Viewer

c# - 对象在自己的DLL中时如何实现自己的延迟加载