我应该总是使用AndAlso和OrElse操作员吗?
有没有我不想使用AndAlso
运算符而不是And
运算符的情况? …或者我不想使用OrElse
运算符而不是Or
运算符?
来自MSDN :
短路权衡
短路可以通过不评估不能改变逻辑运算结果的expression式来提高性能。 但是,如果该expression式执行其他操作,则短路跳过这些操作。 例如,如果该expression式包含对函数过程的调用,则该过程在expression式被短路时不会被调用,并且该函数中包含的任何其他代码不会运行。 如果你的程序逻辑依赖于任何附加的代码,你应该避免短路操作。
当然:如果你想确保评估expression式的两个方面。 例如,如果双方都是由于其他操作而返回布尔值的方法调用,则可能是这种情况。
但总的来说,只要你使用&& / ||,你就应该AndAlso / OrElse 在C / C ++ / C#中,这当然是绝大多数时间。