关于.net:我应该始终使用AndAlso和OrElse运算符吗?

关于.net:我应该始终使用AndAlso和OrElse运算符吗?

Should I always use the AndAlso and OrElse operators?

是否有我不想使用AndAlso运算符而不是And运算符的情况? 还是我不想使用OrElse运算符而不是Or运算符?


从MSDN:

短路权衡

短路可通过不评估不能改变逻辑运算结果的表达式来提高性能。但是,如果该表达式执行其他操作,则短路会跳过这些操作。例如,如果表达式包括对Function过程的调用,则如果表达式短路并且该Function中包含的任何其他代码都不会运行,则不会调用该过程。如果您的程序逻辑依赖于任何其他代码,则应避免操作符短路。


Is there ever a circumstance in which I would not want to use the AndAlso operator rather than the And operator?

当然:如果要确保对表达式的两边都求值。例如,如果双方都是由于其他一些有副作用的操作而返回布尔值的方法调用,则可能是这种情况。

但是通常,只要在C / C ++ / C#中使用&& / ||,就总是使用AndAlso / OrElse,这当然是绝大多数时间。


推荐阅读