If...Then...Else 语句 (Visual Basic)
根据表达式的值有条件地执行一组语句。
语法
' Multiline syntax:
If condition [ Then ]
[ statements ]
[ ElseIf elseifcondition [ Then ]
[ elseifstatements ] ]
[ Else
[ elsestatements ] ]
End If
' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]
指向示例代码的快速链接
本文包括几个示例,说明了 If
...Then
...Else
语句的用法:
组成部分
condition
必需。 表达式。 计算结果必须为 True
或 False
,或者计算结果为可隐式转换为 Boolean
的数据类型。
如果表达式是一个 Nullable Boolean
变量,其计算结果为 Nothing,则条件被视为表达式为 False
,并且计算 ElseIf
块(如果它们存在),或者执行 Else
块(如果它存在)。
Then
在单行语法中是必需的;在多行语法中是可选的。
statements
可选。 后面If
的一个或多个语句 ...如果计算结果为True
,则执行。 condition
Then
elseifcondition
如果存在 ElseIf
,则为必需。 表达式。 计算结果必须为 True
或 False
,或者计算结果为可隐式转换为 Boolean
的数据类型。
elseifstatements
可选。 后面ElseIf
的一个或多个语句 ...如果计算结果为True
,则执行。 elseifcondition
Then
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 语句可能更有用。
单行语法
可以将单行语法用于单个条件,并在符合条件时执行代码。 但是,多行语法提供了更多的结构和灵活性,并且更易于读取、维护和调试。
检查 Then
关键字后面的内容以确定语句是否为单行 If
。 如果在同一行的 Then
后面出现除注释以外的任何内容,则该语句被视为单行 If
语句。 如果 Then
不存在,则它必须是多行 If
...Then
...Else
的开头。
在单行语法中,可以执行多个语句作为 If
...Then
决策的结果。 所有语句必须位于同一行,并且用冒号分隔。
多行语法示例
下面的示例说明了 If
...Then
...Else
语句的多行语法的用法。
'Create a Random object to seed our starting value
Dim randomizer As New Random()
'set our variable
Dim count As Integer = randomizer.Next(0, 5)
Dim message As String
'If count is zero, output will be no items
If count = 0 Then
message = "There are no items."
'If count is 1, output will be "There is 1 item.".
ElseIf count = 1 Then
message = "There is 1 item."
'If count is greater than 1, output will be "There are {count} items.", where {count} is replaced by the value of count.
Else
message = $"There are {count} items."
End If
Console.WriteLine(message)
'This example displays output like the following:
' There are 4 items.
嵌套语法示例
下面的示例包含嵌套的 If
...Then
...Else
语句。
Public Sub Main()
' Run the function as part of the WriteLine output.
Console.WriteLine("Time Check is " & CheckIfTime() & ".")
End Sub
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 3:59 P.M.,
' or if Thursday from noon to 12:59 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
'This example displays output like the following:
'Time Check is False.
单行语法示例
Private Sub SingleLine()
'Create a Random object to seed our starting values
Dim randomizer As New Random()
Dim A As Integer = randomizer.Next(10, 20)
Dim B As Integer = randomizer.Next(0, 20)
Dim C As Integer = randomizer.Next(0, 5)
'Let's display the initial values for comparison
Console.WriteLine($"A value before If: {A}")
Console.WriteLine($"B value before If: {B}")
Console.WriteLine($"C value before If: {C}")
' If A > 10, execute the three colon-separated statements in the order
' that they appear
If A > 10 Then A = A + 1 : B = B + A : C = C + B
'If the condition is true, the values will be different
Console.WriteLine($"A value after If: {A}")
Console.WriteLine($"B value after If: {B}")
Console.WriteLine($"C value after If: {C}")
End Sub
'This example displays output like the following:
'A value before If: 11
'B value before If: 6
'C value before If: 3
'A value after If: 12
'B value after If: 18
'C value after If: 21