문제

VB.NET에서 Call 키워드를 사용하거나 Call 없이 프로시저를 호출할 때의 장단점을 알고 싶습니다.

Private Sub ProOne()
     ' Code Are Here
End Sub

Private Sub Calling()
   ProOne()           ' I would like to know pros and cons of this
   Call ProOne()      ' And I would like to know pros and cons of this
End Sub

미리 감사드립니다.

도움이 되었습니까?

해결책

에서 여기:

일반적으로 Call 문을 사용하여 값을 반환하지 않는 절차를 호출합니다. 프로 시저가 값을 반환하면 COLL 문은이를 폐기합니다.

절차를 호출 할 때 호출 문을 사용할 필요가 없습니다. 그러나 코드의 가독성을 향상시킵니다.

따라서 본질적으로 ProOne () 및 Call ProOne ()은 의미 적으로 동등합니다.

다른 팁

장점이 없으며 단점이 없습니다.

통화 키워드는 이전 VB 방언의 레거시 키워드입니다.

VB.net에서는 의미가 없으며 구문 설탕입니다.

내가 찾은 흥미로운 사용 (아르 자형# 제안), 단일 방법을 호출 한 다음 쓰레기 수집에 표시하기 위해 인스턴스를 만들어야 할 때였습니다.
내가 그것을 유지하는지 확실하지 않습니다.

예를 들어

Call (new MyType()).MySub()

동등한

dim anInstance = new MyType
anInstance.MySub

그것들은 기술적으로 동등하지만 "전화"를 사용하는 것에 대해 논쟁 할 것입니다. VB6에서 vb.net으로 이동할 때는 완전히 다른 방식으로 작성되어야하는 완전히 다른 언어라는 사실을 알 수 있습니다. 불행히도 Microsoft는 VB6 개발자를 지원하기를 원했고 VB6 기능을 모방하는 기능을 추가하여이를 제공했지만 .NET 동등성보다 열등합니다.

VB6 홀드 오버로 모든 관계를 자르면 개발자가 가능한 한 빨리 이러한 비트 사용을 중단하고 코드 출력이 향상됩니다.

문서에서

제어를 함수, 서브 또는 동적 링크 라이브러리 (DLL) 절차로 전송합니다. [Call] Procedurename [(ArgumentList)

그래서,

일반적으로 Call 문을 사용하여 값을 반환하지 않는 절차를 호출합니다. 프로 시저가 값을 반환하면 COLL 문은이를 폐기합니다.

절차를 호출 할 때 호출 문을 사용할 필요가 없습니다. 그러나 코드의 가독성을 향상시킵니다.

Call 문은 2019년에도 여전히 관련성이 있습니다."호출된 표현식이 식별자로 시작하지 않을 때 일반적으로 Call 키워드를 사용합니다.다른 용도로 Call 키워드를 사용하는 것은 권장되지 않습니다."

호출 문(Visual Basic)

MSDN 코드 샘플:

Sub TestCall()
    Call (Sub() Console.Write("Hello"))()

    Call New TheClass().ShowText()
End Sub

Class TheClass
    Public Sub ShowText()
        Console.Write(" World")
    End Sub
End Class
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top