程序员必看VB.NET CASE语句拓展篇 - Go语言中文社区

程序员必看VB.NET CASE语句拓展篇


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

我们来看一个示例,代码如下:

  1. Function bonus(ByVal performance As Integer, _  
  2. ByVal salary As Decimal) As Decimal  
  3. Select performance  
  4. Case 1  
  5. Return salary * 0.1  
  6. Case 2  
  7. Return salary * 0.3  
  8. Case 3  
  9. Return salary * 0.7  
  10. Case 4  
  11. Return salary * 0.9  
  12. Case 5  
  13. Return salary * 1.2  
  14. End Select  
  15. 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 语句的结构。如下:

  1. Select ... (某个表达式,比如一个变量)  
  2. Case... (某个值)  
  3. ...(执行代码)  
  4. Case... (某个值)  
  5. ...执行代码  
  6. 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 如何处理?

你可以改写程序,如下:

  1. Function bonus(ByVal performance As Integer, _  
  2. ByVal salary As Decimal) As Decimal  
  3. Select performance  
  4. Case 1  
  5. Return salary * 0.1  
  6. Case 2  
  7. Return salary * 0.3  
  8. Case 3  
  9. Return salary * 0.7  
  10. Case 4  
  11. Return salary * 0.9  
  12. Case 5  
  13. Return salary * 1.2  
  14. Case Else  
  15. Return 0  
  16. End Select  
  17. End Function  


注意改写的示例增加了两行代码:

  1. Case Else  
  2. Return 0 

这两行代码的意思是,如果 performance 不等于 Case语句的任何值时,就执行 Case Else 后的语句,返回 0 。

VB.NET Case语句可包含多个值和某个范围的值

  1. Function bonus(ByVal performance As Integer, _  
  2. ByVal salary As Decimal) As Decimal  
  3. Select performance  
  4. Case 1  
  5. Return salary * 0.1  
  6. Case 2,3  
  7. Return salary * 0.3  
  8. Case 3 To 7  
  9. Return salary * 0.7  
  10. Case 8 To 9  
  11. Return salary * 0.9  
  12. Case Is <= 15  
  13. Return salary * 1.2  
  14. Case Else  
  15. Return 0  
  16. End Select  
  17. End Function 

每个 Case 语句可以包含一个值,比如:

  1. Case 1  

也可以包含多个值,多个值用逗号 (,) 分开,比如:

  1. Case 2,3 

也可以是某个范围的值,比如:

  1. Case 3 To 7  

也可以是值和比较运算符的组合,比如:

  1. Case Is <= 15 

版权声明:本文来源51CTO,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:http://developer.51cto.com/art/200910/157596.htm
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-16 07:11:36
  • 阅读 ( 1340 )
  • 分类:职场

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢