我应该始终使用AndAlso和OrElse运算符吗?
时间:2020-03-05 18:51:00 来源:igfitidea点击:
有没有一种情况我不想使用AndAlso
运算符而不是And
运算符?还是我不想在其中使用OrElse
运算符而不是Or
运算符?
解决方案
回答
Is there ever a circumstance in which I would not want to use the AndAlso operator rather than the And operator?
当然:如果我们要确保对表达式的两边都进行求值。例如,如果双方都是由于其他一些有副作用的操作而返回布尔值的方法调用,则可能是这种情况。
但是通常,只要使用&& / ||,就应该使用AndAlso / OrElse。在C / C ++ / C#中,这当然是绝大多数时间。
回答
从MSDN:
短路权衡
短路可以通过不评估不能改变逻辑运算结果的表达式来提高性能。但是,如果该表达式执行其他操作,则短路会跳过这些操作。例如,如果表达式包括对Function过程的调用,则如果表达式短路并且该函数中包含的任何其他代码都不会运行,则不会调用该过程。如果程序逻辑依赖于任何其他代码,则应该避免使运算符短路。