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
knows this, so doesn't try and evaluate temp = 0
once it's established that 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.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…