RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
VB.NET中MyClass的作用是什么

VB.NET中MyClass的作用是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

成都创新互联公司为企业级客户提高一站式互联网+设计服务,主要包括成都网站制作、网站设计、手机APP定制开发小程序定制开发、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。 

学习VB.NET时,你可能会遇到VB.NET MyClass问题,这里将介绍VB.NET MyClass问题的解决方法,在这里拿出来和大家分享一下。VB.NET支持一项很有意思的功能——MyClass。大部分人使用VB.NET MyClass可能仅限于调用本类其他构造函数时。其实MyClass可以产生一些很独特的用法。MyClass永远按类的成员为不可重写的状态进行调用,即当类的方法被重写后,用MyClass仍能得到自身的版本。下面这个例子和VB帮助中所举的例子非常相似

Public Class MyClassBase  Protected Overridable Sub Greeting()  Console.WriteLine("Hello form Base")  End Sub   Public Sub UseMe()  Me.Greeting()  End Sub   Public Sub UseMyClass()  MyClass.Greeting()  End Sub  End Class   Public Class MyClassSub  Inherits MyClassBase   Protected Overrides Sub Greeting()  Console.WriteLine("Hello form Sub")  End Sub  End Class

我们用一段代码来测试:

Dim o As MyClassBase = New MyClassSub()  o.UseMe()  o.UseMyClass()

结果是UseMe执行了子类的版本,而UseMyClass还是执行了基类本身的版本,尽管这是一个虚拟方法。观其IL,可以看到其简单的实现原理:

Me用的调用指令是callvirt

IL_0001: callvirt   instance void App1.MyClassBase::Greeting()

而VB.NET MyClass调用的是call

IL_0001:  call       instance void App1.MyClassBase::Greeting()

奇怪的是,如此简单的一个功能,我竟然无法用C#实现,C#怎样也不允许我按非虚函数的方式调用一个虚函数。C++可以用类名::方法名的方式访问自身版本的函数,但C#的类名只能用来访问静态的成员。

关于VB.NET中MyClass的作用是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


网站名称:VB.NET中MyClass的作用是什么
标题来源:http://cqwzjz.cn/article/gphpgj.html