为什么使用 And 而不是 AndAlso?
为什么使用 And 而不是 AndAlso?
我对.NET编程还比较新,最近我偶然发现了AndAlso。据我了解,AndAlso会先评估第一个表达式,如果为真就继续评估第二个表达式...以此类推。而另一方面,则总是要评估表达式中的所有项。
如果我的理解是正确的话,那么AndAlso是否总是(稍微)更高效呢?如果是这样的话,为什么还要使用And呢?
admin 更改状态以发布 2023年5月23日
And
是按位运算符。 AndAlso
是布尔运算符。
从正确性角度来看,如果我们忽略短路计算,And
总是可以在所有情况下使用 AndAlso
(除非你变得有创意),但反过来不成立。
也就是说,And
是一种“通用”的运算符,在按位和逻辑上下文中都会“做正确的事情”,但并没有针对任一方进行优化。 AndAlso
只能在布尔上下文中使用,但它是针对该上下文进行了优化。
Visual Basic 以前没有使用 AndAlso
,因此 And
是唯一选择。现在 VB 有了 AndAlso
,And
可以用于:
- 按位运算(对两个数字执行按位与操作)
- 具有副作用的表达式(您希望禁用短路计算并始终评估表达式的两个部分)。我肯定不会称这为建议做法,因为您可能会得到非常不明显的代码,但如果您将遗留代码从 VB6 升级,则可能还可以接受。