gpt4 book ai didi

c# - GoTo 的可接受使用?

转载 作者:行者123 更新时间:2023-11-30 19:33:42 25 4
gpt4 key购买 nike

我目前正在 .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 循环?

最佳答案

一个 while(true) 循环应该没问题,如果你在它的末尾有一个 break 并且 continue 以前有一个 goto 的地方。然而,这绝对应该只是第一步 - 听起来需要进行有力的重构。

关于c# - GoTo 的可接受使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3196225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com