簡體   English   中英

GoTo、使用 Select 和使用單獨的函數有什么區別?

[英]What's the difference between GoTo, using a Select, and using separate function?

首先,我知道使用Goto從來都不是一個好主意。 但是我很難看出以下結構之間的區別......所有它們都按順序處理條件,當它們找到真值時停止處理,然后將控制權返回到代碼中的指定位置(下一行,如這就是這個特定的“GoTo”目標所在)。 有什么區別:

如果使用 GoTo:

If ConditionA then 'This is designed to skip the evaluation of condition B if condition A is met.
    Do something
    Goto Resume
End If
If ConditionB then
    Do something
    Goto Resume
End If
Resume:

選擇案例:

Select ConditionIsTrue 'This will also skip the evaluation of B if A is true.
    Case A
        Do something
    Case B
        Do something
End select

單獨的子:

EvaluateConditions(condition)

Sub EvaluateConditions(condition)
    If A then
        DoSomething
        Exit Sub
    End If
    If B then
        DoSomething
        Exit Sub
     End If
End Sub

一般來說,

  1. 'goto' 將執行控制轉移到您指定的標簽。 控件永遠不會回到您使用“goto”的地方。 由於程序流程完全改變,因此不建議使用“goto”。 調試變得困難。

  2. 當您編寫一個子例程並從代碼的其他部分調用它時,一旦子例程的執行完成,控制權就會轉移回代碼的被調用部分。 因此,與 goto 不同,程序流程不會受到影響,並且始終建議使用子程序而不是 goto。

  3. 在 select 語句的情況下,它與多個 'if-else' 語句沒有太大區別。 而不是有太多的“if-else”,你可以使用“select”來獲得更清晰的代碼。

具體到您所問的內容,所有三個都相同,因此沒有區別。 您選擇什么取決於您的要求、條件數量、代碼段的可重用性和未來的增強功能。

如果您的條件很少(2 或 3),並且您確定這段代碼不需要未來的增強,那么使用 goto 是“可以的”。(仍然不是一個很好的選擇)

如果一段代碼應該是可重用的,甚至是其他的,使用子程序是最好的選擇。 事實上,即使你有很少的條件,最好在子程序中使用“select”語句,這樣你的代碼看起來很干凈,並且很容易在未來添加更多條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM