哪个性能更好?和安德尔一样

Cur*_*urt 21 vb.net if-statement operators

在编写If语句时,我总是And在需要时使用:

If 1=1 And 2=2 Then
Run Code Online (Sandbox Code Playgroud)

我唯一一次使用的AndAlso是如果第一个不是真的那么第二个条件会出错:

If Not IsDbNull(Value) AndAlso Value=2 Then
Run Code Online (Sandbox Code Playgroud)

然而,最近我听说这AndAlso比性能更好,And因为只有当第一个条件成立时才读取第二个条件.

在这种情况下,我应该一直使用AndAlso吗?

Bin*_*ier 37

是的,AndAlso可以更快And,因为如果先前的条件证明是错误的,它不会评估后续条件.

And是早期版本的Visual Basic的回归.
大多数(我毫不犹豫地说所有)现代语言都使用布尔运算符来表示不需要严格评估的短路条件.

例如&&,C风格语言的和运算符都表现为AndAlso.

要小心,如果你已经大量的代码使用AndOr,全局搜索和替换可以改变现有的行为,如果第二个条件涉及的函数调用有副作用.

我更喜欢使用AndAlso,OrElse除非您特别要求And&提供的功能Or

  • 为您的回应干杯.从现在开始,我将确保使用AndAlso和OrElse而不是旧的And&Or! (2认同)