编程VB.NET 开发者

在 Visual Basic 中,Do...Loop 循环是如何实现的,它的语法变种有哪些,在什么情况下应该使用这个循环,而不是 For 或 While?

用 Hintsage AI 助手通过面试

答案。

Do...Loop 循环允许以比 For(专注于计数器)或 While(条件总是在入口被检查)更灵活的结束条件来组织代码块的重复。在 Visual Basic 中,主要有四种记录变体:

' 入口条件检查 Do While condition ' 循环体 Loop ' 出口条件检查 Do ' 循环体 Loop While condition ' 类似的使用 Until: Do Until condition ' 循环体 Loop Do ' 循环体 Loop Until condition

当以下情况出现时,应该使用 Do...Loop:

  • 不知道确切的迭代次数
  • 退出条件依赖于循环内部的操作(例如,从文件或控制台读取)

反向问题。

问题: 如果在 Do While condition 循环中,条件 condition 最初为假,会发生什么?循环体会被执行一次吗?

答案: 不,循环体不会被执行,因为检查是在第一次执行之前进行的。

示例:

Dim i As Integer = 10 Do While i < 5 Console.WriteLine(i) i += 1 Loop ' 不会输出任何行。

由于对主题细节不知情而导致的实际错误示例。


故事

在数据解析阶段,开发人员使用循环 Do Until reader.EndOfStream,在其中调用从文件读取字符串。但是,由于 EndOfStream 只有在尝试读取超出文件边界后才变为真,最后一行没有被处理。正确的方法是使用 Do While Not reader.EndOfStream 或逐行处理读取并根据 EOF 条件结束循环。


故事

在代码从 For 迁移到 Do...Loop 的过程中,实现了一个循环,但没有在循环体内明确递增计数变量。结果,程序进入了一个无限循环,因为结束条件永远不会到达。始终需要控制 Do...Loop 内部关键变量的变化。


故事

在一个报告子系统中,程序员使用了嵌套的 Do...Loop 循环,但没有考虑内部条件 Exit Do 的嵌套:内部 Exit Do 只退出内部循环,而不是两个循环。这个短期阻塞的 bug 只在处理大量数据时在生产环境中发现。