一、简单If条件语句
使用在称之为分支结构的特殊语句块中的条件表达式控制了程序中哪些语句被执行以及什么样的执行次序执行。“If...Then”分支结构在程序中计算条件值,并根据条件值决定下一步执行的操作。最简单的“If...Then”分支结构可以只写在一行:
If Condition Then Statement[Else statement]
注意:“If...Then”分支结构用于给程序添加逻辑控制能力。这里,“Condition”是个条件表达式,“Statement”是条件有效的Visual Basic语句。例如:
If Score>=20 Then Label1.Text="You Win!"是个使用了下述条件表达式的分支结构:Score>=20
根据这个表达式的值,程序决定是否把Label1对象的“Text”属性设置为“You Win!”。如果“Score”变量的值大于等于20,Visual Basic设置该属性的值,否则,Visual Basic跳过这条赋值语句,然后执行事件过程中的下一行语句。这类比较运算的结果不是“True”就是“False”,条件表达式从来不会产生模棱两可的值。
二、If...Then...Else语句
Visual Basic还支持另一种格式的“If...Then”分支结构,该结构中包含几个条件表达式,由多行语句组成,其中包含了重要关键字“ElseIf”、“Else”以及“End If”。
If Condition1 Then Statements ElseIf Condition2 Then Statements [其他ElseIf子句及其相应的执行语句] Else Statements End If
这个结构中,“Condition1”首先被计算。如果这个条件表达式的值为“True”,那么这个条件表达式下的语句被执行;如果第一个条件的值不是“True”,那么计算第二个表达式(Condition2)的值,如果第二个条件的值为“True”,那么这个条件表达式下的语句块被执行(如果要判断更多的条件,那么继续增加“ElseIf”子句及该子句下的语句块);如果所有条件表达式的值都不是“True”,那么执行“Else”子句下的语句块;最后,整个结构使用“End If”关键字结束。多行“If...Then”结构特别适合于分段计算问题,比如税费方面的计算。下面的代码展示了如何使用多行“If...Then”结构来确定递进税计算问题(收入和税率的对应关系取自美国国内收入服务1997年税率表):
If AdjustedIncome<=24650 Then '15%税段 TaxDue=AdjustedIncome*0.15 ElseIf AdjustedIncome<=59750 Then '28%税段 TaxDue=3697+((AdjustedIncome-24650)*0.28) ElseIf AdjustedIncome<=124650 Then '31%税段 TaxDue=13525+((AdjustedIncome-59750)*0.31) ElseIf AdjustedIncome<=271050 Then '36%税段 TaxDue=33644+((AdjustedIncome-124650)*0.36) Else '39.6%税段 TaxDue=86348+((AdjustedIncome-271050)*0.396) End If
注意:总是可以添加更多的“ElseIf”块到“If...Then”结构中去。但是,当每个“ElseIf”都将相同的表达式比作不同的数值时,这个结构编写起来很乏味。在这种情况下可以使用“Select Case”判定结构。
三、Select Case结构
Visual Basic还支持在程序中使用“Select Case”分支结构来控制语句的执行。 “Select Case”结构与“If...Then...Else”结构相似,但在处理依赖于某个关键变量或称作测试情况的分支时效率更高。并且,使用“Select Case”结构可以提高程序的可读性。“Select Case”结构的语法如下所示:
Select Case Variable Case Value1 Statements Case Value2 Statements Case Value3 Statements ... End Select
“Select Case”结构以关键字“Select case”开始,以关键字“End Select”结束。“Select Case”结构中的“Variable”可以是变量、属性或者是表达式,“Value1”、“Value2”,“Value3”可以是数值、字符串或与要测试的其他情况相关的其他值,如果其中某个值与变量相匹配,那么该“Case”子句下的语句被执行,然后Visual Basic执行“End Select”语句后面的语句。“Select Case”结构中可以使用任意多个“Case”子句,“Case”子句中也可以包括多个“Value”值,多个“Value”值之间使用逗号分隔。
下面示例展示了程序中如何使用“Select Case”结构打印与某人年龄相关的信息。当“Age”变量与某个“Case”值匹配时,相应的信息显示在标签对象中。
Select Case Age case 16 Label1.Text="You can drive now!" Case 18 Label1.Text="You can vote now!" Case 21 Label1.Text="You can drink wine with your meals." Case 65 Label1.Text="Time to retire and have fun!" End Select
注意:“Select Case”结构比功能等效的“If...Then”结构更清晰易读。“Select Case”结构还支持“Case Else”子句,该子句可用于当不满足所有“Case”条件时显示信息。下面是说明“Case Else”子句用法的一个示例:
Select Case Age Case 16 Label1.Text="You can drive now!" Case 18 Label1.Text="You can vote now!" Case 21 Label1.Text="You can drink wine with your meals." Case 65 Label1.Text="Time to retire and have fun!" Case Else Label1.Text="You're a great age!Enjoy it!" End Select
注意:“Select Case”结构每次都要在开始处计算表达式的值,而“If...Then...Else”结构为每个“ElseIf”语句计算不同的表达式,只有在“If”语句和每个“ElseIf”语句计算相同的表达式时,才能使用“Select Case”结构替换“If...Then...Else”结构。