Синтаксис: "Exit Sub" или "Return" в VB.NET подпрограммы
оба " Exit Sub "или" Return", похоже, выполняют одно и то же-выходят из подпрограммы. Есть ли разница в том, как они работают под одеялом?
то есть
Private Sub exitNow()
Exit Sub
End Sub
или
Private Sub exitNow()
Return
End Sub
6 ответов
из документа:
в процедуре Sub или Set оператор Return эквивалентен оператору Exit Sub или Exit Property, и выражение не должно быть предоставлено.
Я предпочитаю Return
над Exit Sub
. Потому что время от времени ты меняешься с Sub
to Function
. В этом случае Exit Sub
можно преобразовать в Exit Function
, но это предполагает, что было предыдущее назначение имени функции (как VB 6), чего, скорее всего, не произошло. Return
поймает эту ситуацию - если метод должен вернуть значение,Return
без аргумента не будет сбой во время компиляции.
Если вы проверяете выходные данные IL 2 операторов, они одинаковы. Однако, поскольку "return" предназначен для того, чтобы вернуть что-то вызывающему абоненту, строго говоря, "Exit Sub" больше подходит для использования в Sub.
они одинаковы в этом контексте.
однако с точки зрения читаемости кода "Exit Sub" будет понятнее, поскольку "Return" указывает, что в качестве вывода используется какое-то значение (что не относится к подпрограммам).
хотя есть исключения, такие как предложения guard, в большинстве случаев я бы рассмотрел либо знак того, что метод слишком длинный.
Я хотел подтвердить, что они действуют одинаково и в лямбда-выражениях, и они делают:
Sub test()
Dim a As Action = Sub() Exit Sub
Dim b As Action = Sub() Return
a()
b()
MsgBox("Yes they do!")
End Sub