VB.NET에서 프로시저 호출의 장점과 단점은 무엇입니까?
문제
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 키워드를 사용하는 것은 권장되지 않습니다."
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