而。。。End While 语句 (Visual Basic)

只要给定条件为 True,就运行一系列语句。

语法

While condition
    [ statements ]
    [ Continue While ]
    [ statements ]
    [ Exit While ]
    [ statements ]
End While

部件

术语 定义
condition 必填。 Boolean 表达。 Nothing如果是condition,Visual Basic 将它视为 False
statements 可选。 以下While一个或多个语句,每次运行一Truecondition
Continue While 可选。 将控制权传输到块的 While 下一次迭代。
Exit While 可选。 将控制转移到块外 While
End While 必填。 终止块的定义 While

注解

While...End While如果希望无限期重复一组语句,只要条件保持不变True,请使用结构。 如果你想要更灵活地测试条件或测试条件的结果,你可能更喜欢 Do...循环语句。 如果要重复语句的次数,则 For...下一个语句 通常是更好的选择。

注释

While Do... 中也使用了关键字 ...Loop 语句Skip While 子句Take While 子句

True如果是condition,则所有statements运行直到End While遇到语句。 然后,Control 返回语句 While ,并 condition 再次检查。 如果 conditionTrue存在,则重复此过程。 False如果是,则控件将传递给语句后面的End While语句。

While 语句始终在启动循环之前检查条件。 当条件保持不变 True时,循环会继续。 False如果是condition首次进入循环,则它甚至不会运行一次。

condition 通常是两个值的比较结果,但它可以是计算结果为 布尔数据类型 值(TrueFalse) 的任何表达式。 此表达式可以包含另一个数据类型的值,例如已转换为 Boolean的数字类型。

可以通过将一个循环置于另一个循环中来嵌套 While 循环。 还可以将不同类型的控件结构嵌套在另一个控件结构中。 有关详细信息,请参阅 嵌套控件结构

退出 While

Exit While 语句可以提供另一While种方法来退出循环。 Exit While 立即将控制权转移到语句后面的 End While 语句。

通常在评估某些条件后使用 Exit While (例如,在结构 If...Then...Else 中)。 如果检测到导致不必要或不可能继续迭代的条件(例如错误值或终止请求),则可能需要退出循环。 当测试可能导致无限循环的条件时,Exit While可以使用该循环,这是一个循环,可以运行极大甚至无限次数的循环。 然后, Exit While 可以使用该循环转义循环。

可以在循环中的任何While位置放置任意数量的Exit While语句。

在嵌套 While 循环中使用时,将 Exit While 控制从最内部的循环转移到下一个更高的嵌套级别。

Continue While 语句会立即将控制权传输到循环的下一次迭代。 有关详细信息,请参阅 Continue 语句

示例 1

在以下示例中,循环中的语句继续运行,直到 index 变量大于 10。

Dim index As Integer = 0
While index <= 10
    Debug.Write(index.ToString & " ")
    index += 1
End While

Debug.WriteLine("")
' Output: 0 1 2 3 4 5 6 7 8 9 10 

示例 2

下面的示例说明了如何使用 Continue WhileExit While 语句。

Dim index As Integer = 0
While index < 100000
    index += 1

    ' If index is between 5 and 7, continue
    ' with the next iteration.
    If index >= 5 And index <= 8 Then
        Continue While
    End If

    ' Display the index.
    Debug.Write(index.ToString & " ")

    ' If index is 10, exit the loop.
    If index = 10 Then
        Exit While
    End If
End While

Debug.WriteLine("")
' Output: 1 2 3 4 9 10

示例 3

以下示例读取文本文件中的所有行。 该方法 OpenText 打开文件并返回读取字符的字符 StreamReader 。 在条件中 WhilePeek 该方法 StreamReader 确定文件是否包含其他字符。

Private Sub ShowText(ByVal textFilePath As String)
    If System.IO.File.Exists(textFilePath) = False Then
        Debug.WriteLine("File Not Found: " & textFilePath)
    Else
        Dim sr As System.IO.StreamReader = System.IO.File.OpenText(textFilePath)

        While sr.Peek() >= 0
            Debug.WriteLine(sr.ReadLine())
        End While

        sr.Close()
    End If
End Sub

另请参阅