If...Then
 
条件分支的控制流语句

语法

If expression Then [statement(s) ] [Else [statement(s) ]] [End If]
or
If expression Then : [statement(s) ] [Else [statement(s) ]] : End If
or
If expression Then
[statement(s) ]
[ ElseIf expression Then ]
[statement(s) ]
[ Else ]
[statement(s) ]
End If

说明

If...Then是一种决策方式。它只是在条件为真时执行代码的机制,并且可以根据更多条件提供执行代码。

expression 可以是以下几种形式之一:
    • 一个条件表达式,例如:
x = 5
    • 由逻辑位操作符分隔的多个条件,例如:
x >= 5 And x <= 10
    • 逻辑短路运算符分开的多个条件,例如:
y <> 0 AndAlso x \ y = 1
(在这种情况下,“x \ y = 1”将仅在“y <> 0”为True时进行评估)
    • 任何数值表达式,在这种情况下,值为零(0)表示False,非零值表示True

多行和单行If可以嵌套。在后一种情况下,可选End If可用于控制嵌套If开始和结束的位置。

-lang fb -lang fblite 方言中,可以使用冒号(:)代替换行,以在单行上构造多行If块。

例子

''这是一个简单的“猜数字”游戏,如果...然后作出决定。

Dim As Integer num, guess

Randomize
num = Int(Rnd * 10) + 1 '创建1到10之间的随机数...
                
Print "猜猜1到10之间的数字"

Do '开始循环

    Input "猜测"; guess '从用户输入一个数字

    If guess > 10 OrElse guess < 1 Then  'The user'猜测是超出范围
        Print "数字不能大于10或小于1!"
    ElseIf guess > num Then  'The user'猜测太高了
        Print "太高"
    ElseIf guess < num Then  'The user'猜猜太低了
        Print "太低"
    ElseIf guess = num Then  '用户猜到正确的号码!
        Print "正确!"
        Exit Do   '退出循环
    End If

Loop '回到循环的开始


方言差异

  • -lang qb -lang fblite 方言中,在If.. 然后区块内声明的变量具有QB中的过程范围范围
  • -lang fb -lang deprecated 方言中,在If.. 然后块内声明的变量只能在该块内部显示,无法在该外部访问。
  • -lang qb 方言中,如果直接在THEN之后有新行或单行注释('),则IF将是多行。冒号,Rem或任何其他语句将导致单行IF。
  • -lang fb -lang fblite 方言中,如果有新行,则单行注释('),冒号()或Rem直接在THEN之后的语句,则IF将是多行。任何其他声明将导致单行IF。

与QB差别

  • QBASIC的单行IF不支持END IF。

参考