VB.NET에서 CallByName
function을 사용하면 성능에 어떤 단점이 있습니까? .NET 2.0에서 Name을 사용하여 호출하는 더 좋은 방법이 있습니까?VB.NET에서 CallbyName 함수의 단점은 무엇입니까?
답변
CallByBame은 기본적으로 "런타임에 메서드를 알아내는" "후기 바인딩"을 제공합니다. 컴파일러가 알아낼 수있는 "초기 바인딩"과 반대입니다.
초기 바인딩을 사용하면 입력을 안전하게 할 수 있으며 코드가 메소드에 올바르게 적용되므로 성능이 향상됩니다. 컴파일러는 당신을 위해 미리 "찾았다".
메서드가 런타임에 조회되고 형식 안전성이 없기 때문에 런타임에 바인딩 성능이 느려집니다. 즉, 메서드가 실제로 존재하지 않을 수 있으며 예외가 발생할 수 있습니다. 그러나 어떤 이유로 객체의 유형을 모르는 경우이 방법이 유용 할 수 있습니다. interop 어셈블리를 망치고 싶지 않으면 COM 객체를 호출 할 때도 사용합니다.
CallByName은 대부분 Type.InvokeMember를 호출합니다. 당신이 직접 수행 할 경우, 여기에 내가 생각 해낸 몇 가지 코드는 다음과 같습니다
Imports System.Reflection ' For access to BindingFlags '
Friend NotInheritable Class LateBinding
Private Const InvokePublicMethod As BindingFlags = BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.InvokeMethod
Private Const GetPublicProperty As BindingFlags = BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.GetProperty
Public Shared Function InvokeFunction(ByVal oObject As Object, ByVal sName As String, ByVal ParamArray yArguments() As Object) As Object
Return oObject.GetType().InvokeMember(sName, InvokePublicMethod, Nothing, oObject, yArguments)
End Function
Public Shared Function GetProperty(ByVal oObject As Object, ByVal sName As String, ByVal ParamArray yArguments() As Object) As Object
Return oObject.GetType().InvokeMember(sName, GetPublicProperty, Nothing, oObject, yArguments)
End Function
End Class
"Cecil has a Name"은 CallByName이 무엇이든 캐싱하지 않는 것에 대해 정확합니다. 이런 식으로 같은 메소드를 반복적으로 호출한다면 어떤 식 으로든 타입 정보를 캐시하고 싶을 것이다. 당신이하지 않으면 상황이 정말로 느려질 수 있습니다. –
CallByName
기능을하지 캐시 방법 바인딩, 매핑하는 해시 테이블을 저장하는 자신의 파견 클래스를 작성하는 훨씬 더 좋을 것이다 않는 경우 이름 문자열은 MethodInfo
개체입니다.
- 1. VB6 CallByName woes
- 2. 정적 방법의 단점은 무엇입니까?
- 3. MSR Accelerator의 단점은 무엇입니까
- 4. SqlBulkCopy의 단점은 무엇입니까?
- 5. std :: reverse_iterator의 단점은 무엇입니까?
- 6. 붉은 나무의 단점은 무엇입니까?
- 7. 많은 인덱스가있는 단점은 무엇입니까?
- 8. onMousedown과 onClick의 단점은 무엇입니까?
- 9. Stackless Python의 단점은 무엇입니까?
- 10. 심볼 삭제의 단점은 무엇입니까?
- 11. 파이썬 달걀의 단점은 무엇입니까?
- 12. Typed DataSets의 단점은 무엇입니까
- 13. DWR의 단점은 무엇입니까?
- 14. H264의 단점은 무엇입니까?
- 15. TableAdapterManager의 단점은 무엇입니까?
- 16. VB.NET에서 XML 문자열 파싱
- 17. Maven 사용의 장점/단점은 무엇입니까?
- 18. AJAX on Rails의 단점은 무엇입니까?
- 19. 무부하 형 제품의 단점은 무엇입니까?
- 20. Facade 디자인 패턴의 단점은 무엇입니까?
- 21. 데이터베이스에서 계단식 삭제의 단점은 무엇입니까?
- 22. Perl Tk 모듈의 단점은 무엇입니까?
- 23. Tomcat에서 세션 복제의 단점은 무엇입니까?
- 24. Android OpenCV 포트의 단점은 무엇입니까?
- 25. VB.net에서
- 26. vb.net에서 StackOverFlow 예외는 무엇입니까?
- 27. VB.NET에서 "내"란 무엇입니까?
- 28. VB.NET에서 : = 연산자가 무엇입니까?
- 29. Ackermann 함수의 용도는 무엇입니까?
- 30. 이 함수의 문제점은 무엇입니까
CallByName에 익숙하지 않아 어떤 컨텍스트에서 사용하겠습니까? 모범이 있습니까? –
CallByName은 리플렉션을 사용합니다. 그래서 다른 방법이 있는지 나는 모른다. CallByName을 사용하는 시나리오를 설명해 주시겠습니까? 그것은 CallByName 또는 다른 것이 필요한 경우 결정하는 데 도움이됩니다. – shahkalpesh