我正在用.Net Framework 2.0在C#中重寫舊的VB6程序(不是我的選擇,它是由公司決定的)。大部分情況都非常好。該程序測量來自精密磨牀的輸入數據,並顯示圖形和刻度以顯示精度。可以使用GoTo嗎?
原程序員是機械工程師,但不是軟件工程師。該程序的工作原理,但在這裏和那裏有一些草率的代碼。最值得注意的是,我遇到了幾個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語句可以接受的情況? (不可否認,一個非轉向解決方案將是首選)。
感謝您的時間和考慮。
注意:我嘗試使用一段時間(真正)循環與休息;聲明,但它導致程序陷入無限循環並鎖定。會不會建議編寫一個包含多個條件的長時間循環(使用和/或等)?
你嘗試了while循環,但是你必須犯這個錯誤,因爲你不應該以無限循環結束。我可以看到這個函數帶有一些嵌套的while循環,因爲它是瘋狂的。這個或者'一些代碼'和'計算'的東西應該被移到函數中,並稱爲IF條件。 – Fosco 2010-07-07 15:28:54
你可能想嘗試遞歸。 – DevinB 2010-07-07 15:28:55