ZetCode

FreeBasic Exit 关键字

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

FreeBasic 的 Exit 关键字用于提前终止循环、函数或子程序。它通过允许提前退出代码块来控制程序流程。

基本定义

在 FreeBasic 中,Exit 是一个流程控制语句,可立即终止当前的循环、函数或子程序。它有几种形式:Exit ForExit DoExit WhileExit Sub/Function

当您需要根据条件跳出循环或提前从函数返回时,Exit 语句非常有用。它有助于避免深度嵌套的条件结构,并使代码更具可读性。

For 循环中的 Exit For

此示例演示了如何使用 Exit For 提前终止循环。

exit_for.bas
For i As Integer = 1 To 10
    Print i
    If i = 5 Then
        Exit For
    End If
Next

循环通常从 1 运行到 10,但当 i 达到 5 时,我们会退出。Exit For 语句会立即终止循环,并在 Next 语句之后继续执行。这对于在早期找到所需内容的搜索操作非常有用。

Do 循环中的 Exit Do

这里我们使用 Exit Do 来跳出无限循环。

exit_do.bas
Dim count As Integer = 0

Do
    count += 1
    Print "Count:"; count
    If count >= 7 Then
        Exit Do
    End If
Loop

Print "Final count:"; count

这会创建一个无限循环,该循环会递增计数器。当 count 达到 7 时,我们使用 Exit Do 退出循环。如果没有退出条件,此循环将永远运行。Exit Do 提供了一种可控的方式来跳出本应无限运行的循环。

While 循环中的 Exit While

此示例展示了 Exit While 如何终止 While 循环。

exit_while.bas
Dim num As Integer = 1

While num < 100
    Print num
    num *= 2
    If num > 20 Then
        Exit While
    End If
Wend

Print "Final number:"; num

While 循环在 num 小于 100 时继续。但是,我们添加了一个额外条件,当 num 超过 20 时退出。Exit While 会立即停止循环执行,即使主条件仍然为真。这演示了嵌套退出条件。

子程序中的 Exit Sub

此示例使用 Exit Sub 提前从子程序返回。

exit_sub.bas
Sub ProcessValue(value As Integer)
    If value < 0 Then
        Print "Error: Negative value"
        Exit Sub
    End If
    
    Print "Processing value:"; value
    ' More processing code here
End Sub

ProcessValue(10)
ProcessValue(-5)
ProcessValue(20)

该子程序检查无效输入(负数)。如果找到,它会打印错误并立即使用 Exit Sub 退出。这可以防止子程序的其余部分使用无效数据执行。提前退出有助于验证输入并干净地处理错误。

Exit Function

在 FreeBASIC 中,您可以使用 Return 语句提前退出函数,该语句会立即结束函数并将值返回给调用者。这在功能上等同于使用 Exit Function 后跟对函数名的赋值,但 Return 更简洁,在现代代码中更受青睐。

exit_function.bas
Function FindFirstEven(numbers() As Integer) As Integer
    For i As Integer = LBound(numbers) To UBound(numbers)
        If numbers(i) Mod 2 = 0 Then
            Return numbers(i) ' Exit early with result
        End If
    Next
    Return -1 ' No even number found
End Function

Dim nums(1 To 5) As Integer = {3, 5, 7, 8, 9}
Print "First even:"; FindFirstEven(nums())

此函数扫描数组以查找第一个偶数。找到后,它会立即使用 Return 退出,将值传回给调用者。如果未找到偶数,则返回 -1 作为备用。虽然 FreeBASIC 也支持 Exit Function,但它通常与将值赋给函数名结合使用。相比之下,Return 是一种直接且富有表现力的返回结果的方式。

带 Exit 的嵌套循环

此示例展示了 Exit 如何与嵌套循环一起工作。

exit_nested.bas
For i As Integer = 1 To 3
    Print "Outer loop:"; i
    For j As Integer = 1 To 5
        Print "  Inner loop:"; j
        If j = 3 Then
            Exit For ' Only exits the inner loop
        End If
    Next
Next

当嵌套循环中使用 Exit For 时,它只会退出包含它的最内层循环。外层循环正常继续。在处理复杂的循环结构时,理解此行为非常重要。每个 Exit 语句仅影响其直接包含的代码块。

Select Case 中的 Exit

此示例演示了在 Select Case 结构中使用 Exit

exit_select.bas
Sub HandleChoice(choice As Integer)
    Select Case choice
        Case 1
            Print "Option 1 selected"
            Exit Sub
        Case 2
            Print "Option 2 selected"
            Exit Sub
        Case Else
            Print "Invalid option"
            Exit Sub
    End Select
    
    Print "This line never executes"
End Sub

HandleChoice(2)

在这里,我们在 Select Case 结构中使用 Exit Sub 在处理完每个 case 后立即返回。这可以防止 fall-through 到其他 case,并使代码的行为更加明确。最后的 Print 语句永远不会执行,因为所有路径都会提前退出子程序。

最佳实践

本教程通过实际示例介绍了 FreeBasic 的 Exit 关键字,展示了它在不同控制结构中的用法。

作者

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

列出所有 FreeBasic 教程