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

c# – IF语句中的运算符顺序,第1张

概述我经常在必要时执行此 *** 作以防止空指针异常: // Example #1if (cats != null && cats.Count > 0){ // Do something} 在#1中,我总是假设猫!= null需要先行,因为 *** 作顺序从左到右进行评估. 但是,与示例#1不同,现在我想要做一些事情,如果对象为null或Count为零,因此我使用逻辑OR而不是AND: // Example 我经常在必要时执行此 *** 作以防止空指针异常:

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

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

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

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

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

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

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

// Example #4if (!(table != null && table.Rows != null && table.Rows.Count > 0)){  // Do something}
解决方法 是的,在这两种情况下都会发生短路,唯一的区别在于&&如果LHS为假(因为整体表达式必须为假),则在||时停止如果LHS为真,则停止(因为整体表达式必须为真).

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

总结

以上是内存溢出为你收集整理的c# – IF语句中的运算符顺序全部内容,希望文章能够帮你解决c# – IF语句中的运算符顺序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1224510.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存