programing

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

kingscode 2023. 5. 21. 15:08
반응형

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

"하위 종료" 또는 "하위 종료" 모두 동일한 작업을 수행하는 것 같습니다. 즉, 하위 루틴을 종료합니다.이불 속에서 작동하는 방식에 차이가 있습니까?

그것은,

Private Sub exitNow()
    Exit Sub
End Sub

또는

Private Sub exitNow()
    Return
End Sub

문서에서:

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

그래서 그들은 이 맥락에서 같습니다.

(Return (<value>)함수 및 속성 .get에 사용됩니다.그 맥락에서 분명히 약간 다릅니다.)

나는 선호하는 경향이 있습니다.Return위에Exit Sub가끔은 당신이 변하기 때문입니다.Sub로.Function이 경우Exit Sub로 변환할 수 있습니다.Exit Function그러나 이는 함수 이름(VB 6과 유사)에 대한 이전 할당이 있었다고 가정하며, 이는 아마도 발생하지 않았을 것입니다. Return이 상황을 파악할 수 있습니다. - 메소드가 값을 반환해야 하는 경우,Return인수가 없으면 컴파일 시 실패합니다.

두 문의 IL 출력을 검사하면 동일합니다.그러나 'return'은 발신자에게 무언가를 뒤로 밀기 위한 것이므로 엄밀히 말하면 'Exit Sub'는 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

반응형