我是.NET编程的新手,我最近偶然发现了AndAlso。据我了解,AndAlso评估第一个表达式,如果它是真的那么它会评估第二个表达式......依此类推。而且,另一方面,始终评估表达式中的所有术语。
如果我的理解是正确的,那么AndAlso总是(略微)更有效率。如果是这种情况,为什么要使用And?
答案 0 :(得分:3)
And
是按位的。 AndAlso
是布尔值。
正确性,如果我们忽视短路,And
总是可以在AndAlso
可以使用unless you get creative)的所有情况下使用,但是反过来说不是真的。
也就是说,And
是一个“通用”运算符,它将在按位和逻辑上下文中“做正确的事”,但不会对其中任何一个进行优化。 AndAlso
只能在布尔上下文中使用,但它已针对它进行了优化。
Visual Basic没有使用AndAlso
,因此And
是唯一的选择。既然VB有AndAlso
,And
应可以用于:
答案 1 :(得分:2)
也许这只是个人选择。但我倾向于认为And
永远不会使用
当然,按位操作需要And
,但这里不是问题(你没有选择And
和AndAlso
之间的按位连接。)
我不喜欢“副作用”的伎俩;如果你想要副作用执行它们,然后然后测试结果值
Dim result1 = SideEffect1(), result2 = SideEffect2()
If result1 AndAlso result2 Then ' ...
是恕我直言
If SideEffect1() And SideEffect2() Then ' ...
意图更清晰,但两种方式都是可能的。
答案 2 :(得分:0)
如果您的表达式有副作用,这可能很有用。例如,您的第二个表达式是您始终要运行的函数,无论之前的计算结果如何。