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

Zac*_*son 47 .net vb.net boolean-logic

是否有一种情况我不想使用AndAlso运营商而不是And运营商?...或者我不想使用OrElse操作员而不是Or操作员?

Vai*_*hav 34

来自MSDN:

短期权衡取舍

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

  • 有人可能会说,依靠你的逻辑代码运行一个函数是模糊的,你的逻辑应该被设计成不依赖于它的清晰度和可维护性. (34认同)
  • 我同意.这里真正的教训是不要编写代码,不能清楚地表明它的副作用! (6认同)

Joe*_*orn 17

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

肯定的是:如果你想确保两者表达的双方进行评估.例如,如果双方都是由于某些其他具有副作用的操作而返回布尔值的方法调用,则可能就是这种情况.

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