VB.NET中MyClass如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
建立一个vbConsoleApplication程序,将本文SourceCP进去
Module Module1 Class BaseClass Public Overridable Sub MyMethod() Console.WriteLine("Father is 50 years old!") End Sub Public Sub UseMe() Me.MyMethod() ' Use calling class's version, even if an override. End Sub Public Sub UseMyClass() MyClass.MyMethod() ' Use this version and not any override. End Sub End Class Class DerivedClass : Inherits BaseClass Public Overrides Sub MyMethod() Console.WriteLine("child is just 25 years old!") End Sub End Class Sub Main() Dim child As New DerivedClass child.UseMe() child.UseMyClass() Console.ReadLine() End Sub End Module
但是在Csharp里竟然无法实现,C#怎样也不允许我按非虚函数的方式调用一个虚函数。C++可以用类名::方法名的方式访问自身版本的函数,但C#的类名只能用来访问静态的成员。这真是C#一个奇怪的限制。也许是我少见多怪吧.在MSDN中是这么描述的:
VB.NET MyClass的行为类似于引用最初实现时类的当前实例的对象变量。VB.NET MyClass与 Me 类似,但对它的所有方法的调用都按该方法为 NotOverridable 来处理。因此,所调用的方法不受派生类中的重写影响。尽管 DerivedClass 重写了 MyMethod,但 UseMyClass 中的 MyClass 关键字使重写的影响无效,编译器会将该调用解析为 MyMethod 的基类版本。
MyClass 不能在 Shared 方法内部使用,但您可以在实例方法内部使用它来访问类的共享成员。
但是在Csharp里竟然无法实现,C#怎样也不允许我按非虚函数的方式调用一个虚函数。C++可以用类名::方法名的方式访问自身版本的函数,但C#的类名只能用来访问静态的成员。这真是C#一个奇怪的限制。也许是我少见多怪吧.在MSDN中是这么描述的:
MyClass 的行为类似于引用最初实现时类的当前实例的对象变量。VB.NET MyClass与 Me 类似,但对它的所有方法的调用都按该方法为 NotOverridable 来处理。因此,所调用的方法不受派生类中的重写影响。尽管 DerivedClass 重写了 MyMethod,但 UseMyClass 中的 MyClass 关键字使重写的影响无效,编译器会将该调用解析为 MyMethod 的基类版本。
VB.NET MyClass不能在 Shared 方法内部使用,但您可以在实例方法内部使用它来访问类的共享成员。
这点在商业应用中还是很不错的,比如父类为一个EmployeeBase,包含一个底薪的数据,那么在实例化雇员的Employee中,Dim e1 as new Employee(EmployeeID),增加员工的底薪的时候,在O/R映像模型建立好之后只需要调用e1.AddSalary(Salary)方法即可调用基类的底薪修改方法.(即统一加底薪)
看完上述内容,你们掌握VB.NET中MyClass如何使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。