ZetCode

FreeBasic Select Case 关键字

最后修改日期:2025 年 6 月 16 日

FreeBasic 的 Select Case 语句提供了一种清晰的方式来处理多个条件分支。当测试单个变量时,它通常比一系列 If-ElseIf 语句更具可读性。

基本定义

Select Case 评估一个表达式一次,并将其与多个可能的值进行比较。每个值都指定在一个 Case 块中。Case Else 块处理任何不匹配的值。

该结构以 Select Case expression 开始,以 End Select 结束。它们之间是 Case 语句,用于定义要与表达式匹配的条件。

基本 Select Case 示例

此示例演示了 Select Case 语句的最简单形式。

basic_case.bas
Dim grade As String = "B"

Select Case grade
    Case "A"
        Print "Excellent!"
    Case "B"
        Print "Good job!"
    Case "C"
        Print "You passed"
    Case Else
        Print "Needs improvement"
End Select

在这里,我们评估一个字母等级并打印相应的消息。代码匹配“B”情况并执行其块。Case Else 将捕获任何未明确列出的等级(D、F 等)。

数值范围匹配

Select Case 可以使用 To 关键字匹配数值范围。

numeric_range.bas
Dim temperature As Integer = 22

Select Case temperature
    Case Is < 0
        Print "Freezing"
    Case 0 To 10
        Print "Very cold"
    Case 11 To 20
        Print "Cool"
    Case 21 To 30
        Print "Comfortable"
    Case Else
        Print "Too hot"
End Select

此示例检查温度范围。Is 关键字允许使用比较运算符。范围使用 To 指定。22° 温度落在了“舒适”范围内。

Case 中的多个值

单个 Case 语句可以匹配由逗号分隔的多个值。

multiple_values.bas
Dim day As String = "Mon"

Select Case day
    Case "Mon", "Tue", "Wed", "Thu", "Fri"
        Print "Weekday"
    Case "Sat", "Sun"
        Print "Weekend"
    Case Else
        Print "Invalid day"
End Select

此代码检查一天是工作日还是周末。第一个 Case 匹配任何工作日缩写。多个值使代码简洁,而无需为每个值设置单独的 Case 语句。

使用 Select Case 进行类型匹配

Select Case 可以处理不同的数据类型,包括字符串和数字。

type_matching.bas
Dim value As Variant = 3.14

Select Case VarType(value)
    Case VT_INTEGER, VT_LONG
        Print "Integer number"
    Case VT_SINGLE, VT_DOUBLE
        Print "Floating-point number"
    Case VT_STRING
        Print "String"
    Case Else
        Print "Unknown type"
End Select

此示例使用 VarType 来检查变量的类型。Case 语句匹配 FreeBasic 的类型常量。对于 3.14 值,代码将打印“浮点数”。

带枚举的 Select Case

枚举与 Select Case 结合使用效果很好,可以提高代码的可读性。

enum_case.bas
Enum Colors
    RED
    GREEN
    BLUE
End Enum

Dim favorite As Colors = GREEN

Select Case favorite
    Case RED
        Print "You chose red"
    Case GREEN
        Print "You chose green"
    Case BLUE
        Print "You chose blue"
End Select

在这里,我们定义了一个颜色枚举并在 Select Case 中使用它。代码匹配 GREEN 情况。枚举使代码比直接在 Case 语句中使用“魔术数字”更易于维护。

嵌套 Select Case

Select Case 语句可以嵌套在彼此内部,以实现复杂的逻辑。

nested_case.bas
Dim category As String = "fruit"
Dim item As String = "apple"

Select Case category
    Case "fruit"
        Select Case item
            Case "apple"
                Print "Apple selected"
            Case "banana"
                Print "Banana selected"
            Case Else
                Print "Unknown fruit"
        End Select
    Case "vegetable"
        Print "Vegetable selected"
    Case Else
        Print "Unknown category"
End Select

此示例显示了嵌套的 Select Case 语句。外部 case 匹配“fruit”,然后内部 case 检查特定的水果。嵌套 case 有助于组织复杂的决策树,同时保持代码的可读性。

带表达式的 Select Case

Select Case 中的表达式可以比简单的变量更复杂。

expression_case.bas
Dim x As Integer = 5
Dim y As Integer = 10

Select Case (x + y)
    Case 1 To 5
        Print "Sum is small"
    Case 6 To 15
        Print "Sum is medium"
    Case Is > 15
        Print "Sum is large"
End Select

在这里,我们在 Select Case 表达式中计算两个变量的和。总和 15 落在“medium”范围内。这表明可以使用任何有效的表达式,而不仅仅是简单的变量。

最佳实践

本教程介绍了 FreeBasic 的 Select Case 语句,并通过实际示例展示了其在不同场景下的用法。

作者

我的名字是 Jan Bodnar,我是一位充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出所有 FreeBasic 教程