我很好奇IF语句是如何在VB6中执行的。 例如,如果我有声明
If x And y Then
'execute some code
End If
如果x
不正确,代码会继续吗?或者它是否继续并评估y
即使没有逻辑点?
另一个例子
If x Or y Then
'execute some code
End If
如果y
为真,代码是否会继续并评估x
?
编辑:
如果我想评估非常复杂的条件并且我不想浪费CPU时间,是否有办法避免嵌套IF
语句?
答案 0 :(得分:4)
你所描述的是短路逻辑,而VB6没有......
例如,在VB.Net中你可以编写
If x AndAlso y then...
在这种情况下,如果y
结果为假,则不会对x
进行测试。
在您的VB6示例中,如果您尝试以下操作,则会出现Object or With block variable not set
错误:
Dim x as Object
If Not x Is Nothing And x.y=1 Then
由于对象x尚未实例化。
答案 1 :(得分:3)
表现出短路行为的笨拙或类似声明:
select case True
case a(), b(), c()
'//if a returns true b & c are not invoked, if b returns true a & b were invoked
case else
...
答案 2 :(得分:2)
要回答您的编辑 - 避免嵌套的IF语句,您可以使用Select Case,在this article的后半部分中介绍。
文章中的代码段:
Select Case strShiftCode
Case "1"
sngShiftRate = sngHourlyRate
Case "2"
sngShiftRate = sngHourlyRate * 1.1
Case "3"
sngShiftRate = sngHourlyRate * 1.5
Case Else
Print "Shift Code Error"
End Select