VB6中复杂的IF THEN语句

时间:2012-10-15 15:15:19

标签: vb6

  

可能重复:
  Does VB6 short-circuit complex conditions?

我很好奇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语句?

3 个答案:

答案 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