Or 与 OrElse [英] Or versus OrElse
问题描述
or 和 OrElse 有什么区别?
if temp is dbnull.value or temp = 0
产生错误:
未为类型DBNull"和类型整数"定义运算符=".
Operator '=' is not defined for type 'DBNull' and type 'Integer'.
虽然这个效果很好!?
if temp is dbnull.value OrElse temp = 0
推荐答案
OrElse
是一个 短路 操作符,Or
不是.
OrElse
is a short-circuiting operator, Or
is not.
根据布尔运算符或"的定义,如果第一项为真,则整体肯定为真——因此我们不需要评估第二项.
By the definition of the boolean 'or' operator, if the first term is True then the whole is definitely true - so we don't need to evaluate the second term.
OrElse
知道这一点,因此一旦确定 temp 是 DBNull.Value
OrElse
knows this, so doesn't try and evaluate temp = 0
once it's established that temp Is DBNull.Value
Or
不知道这一点,并且将始终尝试评估这两个术语.当temp Is DBNull.Value
时,它不能与零比较,所以它倒了.
Or
doesn't know this, and will always attempt to evaluate both terms. When temp Is DBNull.Value
, it can't be compared to zero, so it falls over.
你应该使用......好吧,哪个有意义.
You should use... well, whichever one makes sense.
这篇关于Or 与 OrElse的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!