Подтвердить что ты не робот

Синтаксис: "Exit Sub" или "Return" в подпрограммах VB.NET

Оба "Exit Sub" или "Return", похоже, выполняют одно и то же - выйдите из подпрограммы. Есть ли разница в том, как они работают под обложками?

То есть

Private Sub exitNow()
    Exit Sub
End Sub

или

Private Sub exitNow()
    Return
End Sub
4b9b3361

Ответ 1

Из документа:

В процедуре Sub или Set оператор Return эквивалентен оператору Exit Sub или Exit Property, и выражение не должно предоставляться.

В этом контексте они одинаковы.

Ответ 2

Я предпочитаю Return более Exit Sub. Потому что время от времени вы меняетесь от Sub до Function. В этом случае Exit Sub можно преобразовать в Exit Function, но это предполагает, что было ранее присвоено имя функции (подобно VB 6), что, скорее всего, не произошло. Return поймает эту ситуацию - если метод должен вернуть значение, Return без аргумента не будет работать во время компиляции.

Ответ 3

Если вы проверяете вывод IL из двух операторов, они одинаковы. Однако, поскольку возврат предназначен для того, чтобы оттолкнуть что-то обратно вызывающему, так строго говоря, "Exit Sub больше подходит для использования в Sub.

Ответ 4

В этом контексте они одинаковы.

Однако, с точки зрения удобочитаемости кода, "Exit Sub" будет более понятным, так как "Return" указывает, что в качестве вывода используется какое-то значение (что не относится к подпрограммным программам).

Ответ 5

  • Прежде всего, процедуры идут с подпрограммой, мы должны знать, что мы работаем над определенными процедурами, которые не возвращают определенное значение с возможностью передачи определенных параметров или даже без передачи какого-либо параметра. Такие как:
  • Напечатайте что-нибудь().
  • Вычислить факториал целого числа CalcFact(X).
  • Выполните некоторые процессы для конкретной задачи.

  • Функция - это особый процесс, запрограммированный для достижения конкретной задачи путем передачи некоторых конкретных параметров, и он должен возвращать некоторое значение, которое можно использовать для выполнения общей задачи, например проверки имени пользователя и прохода пользователя.

Короче говоря, Sub не возвращает значение, и мы вызываем его напрямую "Print HelloWorld()", тогда как функции выполняют такие функции, как:

  • ValidUsersNameAndPass("Johne","jOhNe13042019") 'Это может вернуть логическое значение.
  • ValidUsersNameAndPass("Johne","jOhNe13042019"); // Это может вернуть логическое значение.

Ответ 6

Хотя есть исключения, такие как предложения охраны, в большинстве случаев я бы рассмотрел либо знак того, что метод слишком длинный.

Ответ 7

Я хотел подтвердить, что они действуют одинаково и в лямбда-выражениях, и они делают:

Sub test()

    Dim a As Action = Sub() Exit Sub
    Dim b As Action = Sub() Return

    a()
    b()

    MsgBox("Yes they do!") 
 End Sub