your programing

구문 : VB.NET 서브 루틴의 "Exit Sub"또는 "Return"

lovepro 2020. 12. 30. 19:49
반응형

구문 : VB.NET 서브 루틴의 "Exit Sub"또는 "Return"


"Exit 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있습니다. 당신이에서 변경하는 동안 한 번 때문에 SubFunction. 이 경우 Exit Sub는로 변환 될 수 Exit Function있지만 이는 함수 이름 (VB 6과 유사)에 대한 이전 할당이 있었다고 가정합니다. Return이 상황을 포착합니다-메소드가 값을 반환해야하는 경우 Return인수없이 컴파일 타임에 실패합니다.


두 명령문의 IL 출력을 검사하면 동일합니다. 그러나 'return'은 호출자에게 무언가를 다시 푸시하는 것을 의미하므로 엄밀히 말하면 'Exit Sub'가 Sub에서 사용하기에 더 적합합니다.


이 문맥에서는 동일합니다.

그러나 코드 가독성 관점에서 보면 "Return"은 어떤 값이 출력으로 사용된다는 것을 나타 내기 때문에 "Exit Sub"가 더 명확 할 것입니다 (서브 루틴의 경우는 아님).


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

  • 함수는 일부 특정 매개 변수도 전달하여 특정 작업을 달성하도록 프로그래밍 된 특정 프로세스이며, 사용자 이름 및 사용자 통과 확인과 같이 전체 작업을 완료하는 데 사용할 수있는 일부 값을 반환해야합니다.

간단히 말해서 Sub는 값을 반환하지 않으며 직접 호출하는 "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

참조 URL : https://stackoverflow.com/questions/1004657/syntax-exit-sub-or-return-in-vb-net-subroutines

반응형