C |与|| 之间的区别

时间:2017-07-28
本文章向大家介绍c|与|| 之间的区别,需要的朋友可以参考一下。

就像&&&运算符一样,双运算符是一个“短路”运算符。

例如:

if(condition1 || condition2 || condition3)

如果condition1为true,则不检查条件2和3。

if(condition1 | condition2 | condition3)

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

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

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

如果class为null,则if语句将在class != nullfalse 之后停止。如果你只使用&,它会尝试检查class.someVar你会得到一个很好的NullReferenceException。使用Or-Operator可能不是一个陷阱,因为你不太可能触发坏事,但这是要记住的事情。

但是,除非你的设计中每个条件都是要执行的函数,否则没有人会使用单个&|运算符。听起来像是一种设计气味,但有时(很少)这是一种干净的做事方式。该&操作者“跑这3个功能,如果其中一个返回false,执行else块”,而|不会“只如果没有返回false运行else块” -可能是有用的,但正如所说,往往这是一个设计闻。