我目前正在.Net Framework 2.0 中用C# 重写一个旧的VB6 程序(不是我的选择,这是由公司决定的)。在大多数情况下,事情进展顺利。该程序测量来自精密磨床的输入数据,并显示图形和刻度盘以显示精度。
然而,最初的程序员是机械工程师,而不是软件工程师。该程序可以工作,但是到处都有一些草率的代码。最值得注意的是,我遇到了一些 GoTo 语句。在必要的地方把东西放在一个循环中,并从中获得相同的功能是非常容易的。
然而,我在原始代码中遇到了一个案例,看起来 GoTo 所做的不仅仅是模拟循环。它有几个不同的退出条件。它看起来像这样(不是实际的代码,只是我为了演示而编造的一些简短的东西):
VB6 代码
Public Sub Tick()
Dim condition1 As Boolean
Dim condition2 As Boolean
Dim testNumber As Integer
beginning: 'The GoTo label'
' (... Some Other Code Here ...)'
If condition1 = True Then
goto beginning
Else
' (... Do some calculation ...)'
End If
If condition2 = True Then
' (... Do some calculation ...)'
goto beginning
End If
Select Case testNumber
Case 1: '(... Some code ...)'
Case 2: '(... Some code ...)'
Case 3: '(... Some code ...)'
Case 4: goto beginning
End Select
End Sub
实际代码的条件可能比这要少一些,但基本思想是有一些不同的事情会导致它自己循环。有没有一种好方法可以为这种情况编写循环,或者在这种情况下 goto 语句是可以接受的?(诚然,非 goto 解决方案将是首选)。
感谢您的时间和考虑。
注意:我尝试使用带中断的 while(true) 循环;声明,但它导致程序陷入无限循环并锁定。是否更建议编写一个包含多个条件(带有和/或等)的长while循环?