就像
&and
&&运算符一样,double运算符也是“短路”运算符。
例如:
if(condition1 || condition2 || condition3)
如果condition1为true,则不会检查条件2和3。
if(condition1 | condition2 | condition3)
即使1已经为真,这也会检查条件2和3。由于您的条件可能是非常昂贵的功能,因此可以通过使用它们来提高性能。
有一个很大的警告,NullReferences或类似的问题。例如:
if(class != null && class.someVar < 20)
如果class为null,则if语句将在
class != nullfalse
之后停止。如果仅使用&,它将尝试检查
class.someVar并得到一个不错的
NullReferenceException。对于Or-
Operator来说,这可能不是陷阱,因为您不太可能触发不良事件,但要记住这一点。
但是,没有人会使用单数
&或
|运算符,除非您设计的每个条件都是要执行的功能。听起来像是设计的气味,但有时(很少)是一种做事的干净方法。该
&操作者“跑这3个功能,如果其中一个返回false,执行else块”,而
|不会“只运行else块,如果没有回报假”
-可能是有用的,但正如所说,往往这是一个设计闻。
尽管有
|and
&运算符的第二种用法:按位运算。



