문제

"Exit Sub"또는 "Return"은 모두 같은 것을 달성하는 것처럼 보입니다. 서브 루틴을 종료합니다. 표지 아래에서 작동하는 방식에 차이가 있습니까?

그건,

Private Sub exitNow()
    Exit Sub
End Sub

또는

Private Sub exitNow()
    Return
End Sub
도움이 되었습니까?

해결책

문서에서 :

하위 또는 세트 절차에서 반환 문은 종료 하위 또는 종료 속성 문과 동일하며 표현식을 제공해서는 안됩니다.

그래서 그들은이 맥락에서 동일합니다.

다른 팁

나는 선호하는 경향이있다 Return ~ 위에 Exit Sub. 때때로 당신은 바뀌기 때문입니다 Sub 에게 Function. 이 경우 Exit Sub 변환 될 수 있습니다 Exit Function, 그러나 이것은 기능 이름 (VB 6)에 대한 이전 할당이 있었다고 가정합니다. Return 이 상황을 포착 할 것입니다 - 방법이 값을 반환 해야하는 경우 Return 컴파일 시간에 논쟁이 실패 할 것입니다.

2 문의 IL 출력을 검사하면 동일합니다. 그러나 'return'은 발신자에게 무언가를 다시 밀기위한 것이기 때문에 엄밀히 말하면 'Exit Sub'는 서브에서 사용하기에 더 적합합니다.

그들은이 맥락에서 동일합니다.

그러나 코드 가독성 관점에서 "Exit Sub"는 "return"이 일부 값이 출력으로 사용되고 있음을 나타내므로 "Exit Sub"는 명확해질 것입니다 (하위 경로의 경우에는 그렇지 않음).

  • 우선, 절차는 SUB와 함께 제공되며 특정 매개 변수를 전달하거나 매개 변수를 전달하지 않고도 특정 값을 반환하지 않는 특정 절차를 연구하고 있음을 알아야합니다. 와 같은:
  • 무언가 ()를 인쇄하십시오.
  • 정수 번호의 계승을 계산하십시오 CalcFact(X).
  • 특정 작업에 대한 프로세스를 수행하십시오.

  • 함수는 특정 매개 변수를 전달하여 특정 작업을 달성하기 위해 프로그래밍 된 특정 프로세스이며 사용자 이름 및 사용자 패스 유효성 검증과 같은 전체 작업을 완료하는 데 사용할 수있는 일부 값을 반환해야합니다.

짧은 서브에서는 값을 반환하지 않으며 직접 호출합니다. "Print HelloWorld()" 기능은 다음과 같은 기능을 수행합니다.

  • ValidUsersNameAndPass("Johne","jOhNe13042019") '이것은 부울 가치를 반환 할 수 있습니다.
  • ValidUsersNameAndPass("Johne","jOhNe13042019"); // 부울 값을 반환 할 수 있습니다.

가드 조항과 같은 예외가 있지만 대부분의 경우 방법이 너무 길다는 신호를 고려할 것입니다.

나는 그들이 Lambda 표현에서도 동일하게 행동한다는 것을 확인하고 싶었습니다.

Sub test()

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

    a()
    b()

    MsgBox("Yes they do!") 
 End Sub
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top