VB.NET编程语言,与其他种类的编程语言相比还是有很多不同之处,有很多比较突出的特点,使他一经出现就立即受到了开发人员的关注和使用。今天,大家将会认识到VB.NET MyClass的行馆使用方法,方便大家理解这项语言的具体功能及应用技巧。
关于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中是这么描述的: #t#
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)方法即可调用基类的底薪修改方法.(即统一加底薪).个人意见,呵呵,所得不好,还请大家多多指教.