加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB.NET中CallbyName函数的缺点?

发布时间:2020-12-17 00:04:45 所属栏目:大数据 来源:网络整理
导读:在VB.NET中使用 CallByName function是否有任何性能缺点?有没有更好的方法在.NET 2.0以后通过Name进行调用. CallByBame基本上给你“后期绑定”,即“在运行时找出方法”,而不是“早期绑定”,编译器会为你找出它. 使用早期绑定,您可以是类型安全的,并且您将获
在VB.NET中使用 CallByName function是否有任何性能缺点?有没有更好的方法在.NET 2.0以后通过Name进行调用.
CallByBame基本上给你“后期绑定”,即“在运行时找出方法”,而不是“早期绑定”,编译器会为你找出它.

使用早期绑定,您可以是类型安全的,并且您将获得更好的性能,因为您的代码将直接使用该方法.编译器会提前为您“查找”.

由于在运行时查找方法并且您没有类型安全性,因此后期绑定性能较慢,这意味着该方法可能实际上不存在,您可能会遇到异常.但如果由于某种原因你不知道对象的类型,这可能会很方便.如果我不想弄乱互操作程序集,我也用它来调用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,GetPublicProperty,yArguments)

    End Function

End Class

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读