我应该总是使用AndAlso和OrElse运算符吗?

时间:2008-09-10 18:51:52

标签: .net vb.net boolean-logic

是否有一种情况我不想使用AndAlso运算符而不是And运算符? ...或者我不想使用OrElse运算符而不是Or运算符?

2 个答案:

答案 0 :(得分:34)

来自MSDN

短期权衡

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

答案 1 :(得分:17)

  

是否有一种情况我不想使用AndAlso运算符而不是And运算符?

当然:如果您想确保评估表达式的两个侧。例如,如果双方都是由于某些其他具有副作用的操作而返回布尔值的方法调用,则可能就是这种情况。

但一般情况下,只要在C / C ++ / C#中使用AndAlso / OrElse,就会使用&& / ||,这当然是绝大多数时间。