为了账号安全,请及时绑定邮箱和手机立即绑定

要说的是,要做的事有什么区别呢?

要说的是,要做的事有什么区别呢?

C#
一只名叫tom的猫 2019-07-26 15:14:16
要说的是,要做的事有什么区别呢?我一直用||(两个管道)在OR表达式中,包括C#和PHP。偶尔我会看到一根管子被使用:|..这两种用法有什么区别?在使用一种或另一种时是否有任何注意事项?或者它们是可互换的?
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

就像&&&操作符,双操作符是“短路”操作符.

例如:

if(condition1 || condition2 || condition3)

如果条件1为真,则将不检查条件2和3。

if(condition1 | condition2 | condition3)

这将检查条件2和3,即使1已经为真。由于您的条件可能是相当昂贵的功能,您可以通过使用它们获得良好的性能提升。

有一个很大的警告,NullReference或类似的问题。例如:

if(class != null && class.someVar < 20)

如果类为空,则if-语句将在class != null都是假的。如果您只使用&,它将尝试检查class.someVar你得到一个很好的NullReferenceException..使用or-操作符可能不是什么陷阱,因为不太可能触发一些不好的东西,但是要记住这一点。

从来没有人用过单曲&|运算符,除非您有一个设计,其中每个条件都是必须执行的函数。听起来像设计的味道,但有时(很少)它是一种干净的方式来做事情。这个&运算符执行“运行这3个函数,如果其中一个函数返回false,则执行Else块”,而|“只有在没有人返回false的情况下才运行Else块”-可能很有用,但正如所说,这通常是一种设计味。

第二次使用|&接线员:按位操作.




查看完整回答
反对 回复 2019-07-27
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

一种是“按位或”。

10011 b\x{e76f}01000b=>11011b

另一种是逻辑或。

真或假=>真



查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 371 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信