If...Then...Else 语句 (Visual Basic)

根据表达式的值有条件地执行一组语句。

' Multiple-line syntax:
If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]

部件

  • condition
    必需。 表达式。 计算结果必须为 True 或 False 或者可隐式转换为 Boolean 的数据类型。

    如果表达式是计算结果为 nothing可以为 NullBoolean 变量,条件处理,就好像该表达式不 True,并且,Else 块中执行。

  • Then
    在单行语法中为必选项,在多行语法中为可选。

  • statements
    可选。 跟在 If...Then 后面的一条或多条语句,如果 condition 的计算结果为 True,则执行这些语句。

  • elseifcondition
    如果存在 ElseIf,则为必选。 表达式。 计算结果必须为 True 或 False 或者可隐式转换为 Boolean 的数据类型。

  • elseifstatements
    可选。 跟在 ElseIf...Then 后面的一条或多条语句,如果 elseifcondition 的计算结果为 True,则执行这些语句。

  • elsestatements
    可选。 一条或多条语句,如果前面的 condition 或 elseifcondition 表达式的计算结果都不是 True,则会执行这些语句。

  • End If
    终止 If...Then...Else 块。

备注

多行语法

当遇到 If...Then...Else 语句时,condition 将被测试。 如果 condition 为 True,则会执行 Then 之后的语句。 如果 condition 为 False,则按顺序计算每个 ElseIf 语句(如果有)。 如果找到某个值为 True 的 elseifcondition,则会执行紧跟在关联的 ElseIf 之后的语句。 如果没有任何 elseifcondition 的计算结果为 True,或者没有 ElseIf 语句,则会执行 Else 之后的语句。 执行了 Then、ElseIf 或 Else 后面的语句之后,将继续执行 End If 之后的语句。

ElseIf 和 Else 子句都是可选。 可以根据需要在 If...Then...Else 语句中放置任意多个 ElseIf 子句,但 ElseIf 子句不能出现在 Else 子句后面。 If...Then...Else 语句可以相互嵌套。

在多行语法中,第一行只能是 If 语句。 ElseIf、Else 和 End If 语句的前面只能有行标签。 If...Then...Else 块必须以 End If 语句结尾。

提示

当计算具有若干可能值的单个表达式时,Select...Case 语句 (Visual Basic) 可能会更有用。

单行语法

可以将单行语法用于简短的测试。 但是,多行语法提供更多的结构和灵活性,并且通常更易于阅读、维护和调试。

Then 关键字后面是进行检查,以确定语句是否为单行 If。 如果同一行中的 Then 后面出现注释以外的任何其他内容,则该语句将被视为单行 If 语句。 如果 Then 不存在,则它必须是多行 If...Then...Else 的开头。

在单行语法中,可以作为 If...Then 判定的结果执行多条语句。 所有语句必须位于同一行上,并且由逗号分隔。

示例

下面的示例阐释了 If...Then...Else 语句中多行语法的用法。

        Dim count As Integer = 0
        Dim message As String

        If count = 0 Then
            message = "There are no items."
        ElseIf count = 1 Then
            message = "There is 1 item."
        Else
            message = "There are " & count & " items."
        End If

下面的示例包含嵌套 If...Then...Else 语句。

Private Function CheckIfTime() As Boolean
    ' Determine the current day of week and hour of day.
    Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek
    Dim hour As Integer = DateTime.Now.Hour

    ' Return True if Wednesday from 2 to 4 P.M.,
    ' or if Thursday from noon to 1 P.M.
    If dayW = DayOfWeek.Wednesday Then
        If hour = 14 Or hour = 15 Then
            Return True
        Else
            Return False
        End If
    ElseIf dayW = DayOfWeek.Thursday Then
        If hour = 12 Then
            Return True
        Else
            Return False
        End If
    Else
        Return False
    End If
End Function

下面的示例阐述了单行语法的用法:

If A > 10 Then A = A + 1 : B = B + A : C = C + B

请参见

参考

#If...Then...#Else 指令

Choose

Select...Case 语句 (Visual Basic)

Switch

If 运算符 (Visual Basic)

概念

嵌套的控件结构 (Visual Basic)

决策结构 (Visual Basic)

Visual Basic 中的逻辑运算符和位运算符