Written by rdc
选择案例块可以被视为优化的If-ElseIf梯形图,并且以相同的方式工作。标准选择案例可以使用<表达式>的任何标准数据类型,并针对整数值优化专门的选择案例为固定格式。
此代码段显示标准选择大小写的语法。表达式通常是可以是任何标准数据类型或类型或数组的单个元素的变量。
Select Case <expression>
Case <list>
<statement>
<statement>
...
Case Else
<statement>
<statement>
...
End Select
Case语句的<列表>子句可以是以下格式之一。
案例<value >:值是支持的数据类型或枚举之一。
案例<值>至<值>:指定值的范围。
案例是<operator ><value >:运算符是任何逻辑运算符。
<值>,<值>,...:以逗号分隔的值列表。
案例<变量>:包含值的变量。
以下代码片段说明了程序中如何使用这些不同的格式。
Case 47
Case 47 To 59
Case Is > 60
Case 47, 48, 53
Case keycode
Select Case As Const是Select语句的更快版本,旨在使用0到4097范围内的整数表达式。
Select Case As Const <integer_expression>
Case <list>
<statement>
<statement>
...
Case Else
<statement>
<statement>
...
End Select
Select Case As Const的<列表>语句格式仅限于值或枚举值。也就是说,在Case As Const中不允许运算符表达式。
执行Case块时,将执行Case关键字直到下一个Case关键字(或End Select)之前的语句。案件中只有一个句子将在任何一个时间执行。如果存在Case Else,则如果No Case与Select语句的<表达式>部分匹配,则Else块中的语句将执行。以下程序说明了如何使用Select Case语句块。
'Ascii code of key press
Dim As Integer keycode
'Loop until esc key is pressed
Do
keycode = Asc(Inkey)
Select Case As Const keycode
Case 48 To 57
Print "You pressed a number key."
Case 65 To 90
Print "You pressed an upper case letter key."
Case 97 To 122
Print "You pressed a lower case key."
End Select
Sleep 1
Loop Until keycode = 27 '27 is the ascii code for Escape
End
在程序中,当您按下一个键时,该值将使用Asc函数转换为一个数字。由于这将始终是一个小于4097的整数值(因为ASCII字符代码范围为0到255),所以使用Select Case作为Const格式。
编译器将根据Case范围检查keycode的值,以查看该块是否应该执行。如果键码在特定范围内,则打印语句将会执行,然后程序的流程将在结束选择之后的下一行继续。如果键码与任何Case范围不匹配,则程序将继续执行End Select之后的下一行。
选择案例通常可以从If-Elseif梯子翻译。为了说明这一点,以前的程序如下所示为If-ElseIf梯形图。
'Ascii code of key press
Dim As Integer keycode
'Loop until esc key is pressed
Do
keycode = Asc(Inkey)
If (keycode >= 48) And (keycode <= 57) Then
Print "You pressed a number key."
ElseIf (keycode >= 65) And (keycode <= 90) Then
Print "You pressed an upper case letter key."
ElseIf (keycode >= 97) And (keycode <= 122) Then
Print "You pressed a lower case key."
End If
Sleep 1
Loop Until keycode = 27 '27 is the ascii code for Escape
End
如果比较两个程序,您可以看到逻辑非常相似,但是Select Case比If-ElseIf梯形图更易于阅读和理解。