有过开发经验的程序员知道,条件语句在代码中的作用,在VB.NET中VB.NET CASE语句就是比较常用的一种,下面是详细的介绍和代码的演示。
如果要将同一个表达式与不同的值进行比较,则可以用 Select...Case 语句来替换 If...Then...Else 语句。所不同的是, If 和 ElseIf 语句可在每个语句中计算不同的表达式,而 Select 语句对单个表达式只计算一次,然后将其和不同的值比较。

我们来看一个示例,代码如下:
- Function bonus(ByVal performance As Integer, _
 - ByVal salary As Decimal) As Decimal
 - Select performance
 - Case 1
 - Return salary * 0.1
 - Case 2
 - Return salary * 0.3
 - Case 3
 - Return salary * 0.7
 - Case 4
 - Return salary * 0.9
 - Case 5
 - Return salary * 1.2
 - End Select
 - End Function
 
这个计算员工奖金 (bonus) 的函数 (Function) 有两个参数,一个是 performance,即员工的表现,另外一个是 salary,即员工的工资。员工的表现有 5 等,分别用 1,2,3,4,5 来表示。这个示例用了 Select...Case 语句,意思是当员工 performance 为 1 时,员工的奖金是工资乘以 0.1;当员工 performance 为 2 时,员工的奖金是工资乘以 0.3;当员工 performance 为 3 时,员工的奖金是工资乘以 0.7;员工 performance 为 4 时,员工的奖金是工资乘以 0.9;员工 performance 为 5 时,员工的奖金是工资乘以 1.2。
通过这个示例,你可以了解 Select...Case 语句的结构。如下:
- Select ... (某个表达式,比如一个变量)
 - Case... (某个值)
 - ...(执行代码)
 - Case... (某个值)
 - ...执行代码
 - End Select
 
你可以使用任意数目的 VB.NET CASE语句增加要比较的值。
Visual Basic 按照在 Select...Case 结构中出现的顺序,将表达式的值和 Case 语句中的值进行比较。如果发现有一个 Case 的值匹配,就执行该 Case 相应的代码,执行完之后,不会再执行其它VB.NET Case 语句,直接就到 End Select 了。
VB.NET CASE Else语句
如果表达式不符合 Case语句的任何值,可以用 Case Else 语句来应付例外情况。比如上个示例中,除了 1 到 5 的数值外,假设员工 performance 为 0 或者大于 6 如何处理?
你可以改写程序,如下:
- Function bonus(ByVal performance As Integer, _
 - ByVal salary As Decimal) As Decimal
 - Select performance
 - Case 1
 - Return salary * 0.1
 - Case 2
 - Return salary * 0.3
 - Case 3
 - Return salary * 0.7
 - Case 4
 - Return salary * 0.9
 - Case 5
 - Return salary * 1.2
 - Case Else
 - Return 0
 - End Select
 - End Function
 
注意改写的示例增加了两行代码:
- Case Else
 - Return 0
 
这两行代码的意思是,如果 performance 不等于 Case语句的任何值时,就执行 Case Else 后的语句,返回 0 。
VB.NET Case语句可包含多个值和某个范围的值
- Function bonus(ByVal performance As Integer, _
 - ByVal salary As Decimal) As Decimal
 - Select performance
 - Case 1
 - Return salary * 0.1
 - Case 2,3
 - Return salary * 0.3
 - Case 3 To 7
 - Return salary * 0.7
 - Case 8 To 9
 - Return salary * 0.9
 - Case Is <= 15
 - Return salary * 1.2
 - Case Else
 - Return 0
 - End Select
 - End Function
 
每个 Case 语句可以包含一个值,比如:
- Case 1
 
也可以包含多个值,多个值用逗号 (,) 分开,比如:
- Case 2,3
 
也可以是某个范围的值,比如:
- Case 3 To 7
 
也可以是值和比较运算符的组合,比如:
- Case Is <= 15