Как «Выход Sub», так и «Return», похоже, выполняют одно и то же - выход из подпрограммы. Есть ли разница в том, как они работают под крышками?
То есть
Private Sub exitNow() Exit Sub End Sub
или
Private Sub exitNow() Return End Sub
Из документа:
В процедуре Sub или Set оператор Return эквивалентен оператору Exit Sub или Exit Property, и выражение не должно предоставляться.
Так что в этом контексте они одинаковы.
Я предпочитаю Return, чем Exit Sub. Потому что время от времени вы меняете с Sub на Function. В этом случае Exit Sub можно преобразовать в Exit Function, но это предполагает, что ранее было присвоено имя функции (как VB 6), чего, скорее всего, не произошло. Return поймает эту ситуацию - если метод должен вернуть значение, Return без аргументов завершится неудачей во время компиляции.
Return
Exit Sub
Sub
Function
Exit Function
Если вы проверите выход IL двух операторов, они совпадают. Тем не менее, так как «возврат» предназначен для передачи чего-либо обратно вызывающей стороне, строго говоря, «выход из Sub» более подходит для использования в Sub.
Они одинаковы в этом контексте.
Однако, с точки зрения читабельности кода, «Exit Sub» будет более понятным, поскольку «Return» указывает на то, что в качестве вывода используется какое-то значение (что не относится к подпрограммам).
CalcFact(X)
Выполнение некоторых процессов для конкретной задачи.
Функция - это особый процесс, запрограммированный для достижения конкретной задачи путем передачи некоторых конкретных параметров, и он должен возвращать некоторое значение, которое можно использовать для выполнения общей задачи, например проверки имени пользователя и пользователя. пройти.
Короче говоря, Sub Не возвращает значение, и мы вызываем его напрямую "Print HelloWorld()", тогда как такие функции:
"Print HelloWorld()"
ValidUsersNameAndPass("Johne","jOhNe13042019")
ValidUsersNameAndPass("Johne","jOhNe13042019");
Я хотел подтвердить, что они действуют одинаково и в лямбда-выражениях, и они делают:
Sub test() Dim a As Action = Sub() Exit Sub Dim b As Action = Sub() Return a() b() MsgBox("Yes they do!") End Sub
Несмотря на то, что существуют исключения, такие как охранные предложения, в большинстве случаев я бы рассматривал любой признак того, что метод слишком длинный.