运算符Select Case用于检查表达式的值是否符合一个或多个情况。这是多个嵌套的If...ElseIf的替代方案,使代码更简洁且更易读。
特点:
Case部分可以包括范围(Case 1 To 10)、单独的值(Case 2, 4, 6)、复杂表达式(Case Is > 100)。复杂案例:
Dim status As Integer = 7 Select Case status Case 1 To 5 Console.WriteLine("从1到5") Case 6, 7, 8 Console.WriteLine("从6到8") Case Is > 10 Console.WriteLine("大于10") Case Else Console.WriteLine("其他值") End Select
与If...ElseIf的区别:
If...ElseIf允许构建更灵活的检查,使用逻辑运算符。问题: “在检查字符串值时,如果案例区分大小写,Select Case的表现如何?”
正确答案: 在Select Case中的比较是考虑Option Compare参数的。默认情况下,在Visual Basic中比较对大小写不敏感(Option Compare Text),但可以更改(Option Compare Binary)。如果启用Option Compare Binary,"test"和"Test"将被视为不同。
示例:
' 文件开始处: ' Option Compare Binary Dim txt As String = "Test" Select Case txt Case "test" Console.WriteLine("会触发吗?不") Case "Test" Console.WriteLine("会触发吗?是") End Select
故事
在库存管理项目中,将数字标识符作为字符串在Select Case中进行了比较。在数据转换中,由于编码不同和大小写差异,部分案例未能匹配,导致错误分类。
故事
在在线论坛开发中,使用范围Case 1 To 10来检查用户等级,但在边界值(Boundary Value)上犯了错——当status=10时,该部分未能触发,因为在设计时不够细心。
故事
在银行应用程序中,试图在一个Case中检查两个变量(Case a > 5 And b < 3)。代码编译时出错,转向If...ElseIf帮助识别了操作路径中的逻辑错误。