Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB6中的复杂IF-THEN语句_Vb6 - Fatal编程技术网

VB6中的复杂IF-THEN语句

VB6中的复杂IF-THEN语句,vb6,Vb6,可能重复: 我很好奇在VB6中如何执行IF语句。 例如,如果我有声明 If x And y Then 'execute some code End If 如果x不正确,代码是否继续?或者,即使没有逻辑点,它是否继续计算y 另一个例子 If x Or y Then 'execute some code End If 如果x为真,代码是否继续并计算y 编辑: 如果我想评估非常复杂的条件,不想浪费CPU时间,有没有办法避免嵌套的IF语句?您所描述的是短路逻辑,而VB6没有 例如,

可能重复:

我很好奇在VB6中如何执行IF语句。 例如,如果我有声明

If x And y Then
    'execute some code
End If
如果
x
不正确,代码是否继续?或者,即使没有逻辑点,它是否继续计算
y

另一个例子

If x Or y Then
    'execute some code
End If
如果
x
为真,代码是否继续并计算
y

编辑:
如果我想评估非常复杂的条件,不想浪费CPU时间,有没有办法避免嵌套的
IF
语句?

您所描述的是短路逻辑,而VB6没有

例如,在VB.Net中,您可以编写

If x AndAlso y then...
在这种情况下,如果
x
结果为假,则不测试
y

在VB6示例中,如果尝试以下操作,则会出现
对象或With block variable not set
错误:

Dim x as Object
If Not x Is Nothing And x.y=1 Then

由于对象x尚未实例化。

要回答您的编辑-避免嵌套的IF语句,您可以使用Select Case,这将在后面的部分中介绍

文章中的代码片段:

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

显示短路行为的笨拙或类似陈述:

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
      ...

不,vb 6没有短路逻辑。继续执行。不,我的问题是关于嵌套
IF
语句的替代方案。看编辑。那是另一个故事。提供了一个关于如何有效地做到这一点的答案。这不是另一个问题的重复,而另一个问题的答案与我想要的完全不同?谁打这些电话?不是VB6的人,但听起来乔恩是对的。您可以通过执行类似if Function()和FunctionB()的操作来验证它,然后定义函数A和函数B以打印调试消息并返回false。然后看看你从谁那里得到调试消息。@rbaryyoung:No-AndAlso//code>和OrElse运算符只存在于VB.NET中,而不存在于VB6中。@rbaryyoung为了避免将来的混淆,你能删除你的注释吗?是的,这也是我想的。。谢谢你的回答。不可读!如果我发现自己维护这段代码是因为它“比嵌套的ifs更好”,那么,我觉得如果a()那么b()那么c()那么