加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – IF语句中的运算符顺序

发布时间:2020-12-15 19:37:23 所属栏目:百科 来源:网络整理
导读:我经常在必要时执行此操作以防止空指针异常: // Example #1if (cats != null cats.Count 0){ // Do something} 在#1中,我总是假设猫!= null需要先行,因为操作顺序从左到右进行评估. 但是,与示例#1不同,现在我想要做一些事情,如果对象为null或Count为零,因
我经常在必要时执行此操作以防止空指针异常:

// Example #1
if (cats != null && cats.Count > 0)
{
  // Do something
}

在#1中,我总是假设猫!= null需要先行,因为操作顺序从左到右进行评估.

但是,与示例#1不同,现在我想要做一些事情,如果对象为null或Count为零,因此我使用逻辑OR而不是AND:

// Example #2
if (table == null || table.Rows == null || table.Rows.Count <= 0)
{
  // Do something
}

逻辑比较的顺序是否重要?或者我也可以反转顺序并获得相同的结果,例如在示例#3中?

// Example #3
if (table.Rows.Count <= 0 || table.Rows == null || table == null)
{
  // Do something
}

(顺便说一下,我意识到我可以像下面那样重写#2,但我觉得它很乱,而且我仍然对OR运算符感到好奇)

// Example #4
if (!(table != null && table.Rows != null && table.Rows.Count > 0))
{
  // Do something
}

解决方法

是的,在这两种情况下都会发生短路,唯一的区别在于&&如果LHS为假(因为整体表达式必须为假),则在||时停止如果LHS为真,则停止(因为整体表达式必须为真).

您问题中的前两个示例是正确的,如果table或table.Rows为null,则第三个将抛出异常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读