VB.NET MyClass使用方法細(xì)講
VB.NET編程語(yǔ)言,與其他種類的編程語(yǔ)言相比還是有很多不同之處,有很多比較突出的特點(diǎn),使他一經(jīng)出現(xiàn)就立即受到了開發(fā)人員的關(guān)注和使用。今天,大家將會(huì)認(rèn)識(shí)到VB.NET MyClass的行館使用方法,方便大家理解這項(xiàng)語(yǔ)言的具體功能及應(yīng)用技巧。
關(guān)于VB.NET MyClass,大家請(qǐng)先建立一個(gè)vbConsoleApplication程序,將本文SourceCP進(jìn)去
- 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里竟然無法實(shí)現(xiàn),C#怎樣也不允許我按非虛函數(shù)的方式調(diào)用一個(gè)虛函數(shù)。C++可以用類名::方法名的方式訪問自身版本的函數(shù),但C#的類名只能用來訪問靜態(tài)的成員。這真是C#一個(gè)奇怪的限制。也許是我少見多怪吧.在MSDN中是這么描述的: #t#
VB.NET MyClass的行為類似于引用最初實(shí)現(xiàn)時(shí)類的當(dāng)前實(shí)例的對(duì)象變量。VB.NET MyClass與 Me 類似,但對(duì)它的所有方法的調(diào)用都按該方法為 NotOverridable 來處理。因此,所調(diào)用的方法不受派生類中的重寫影響。盡管 DerivedClass 重寫了 MyMethod,但 UseMyClass 中的 MyClass 關(guān)鍵字使重寫的影響無效,編譯器會(huì)將該調(diào)用解析為 MyMethod 的基類版本。
MyClass 不能在 Shared 方法內(nèi)部使用,但您可以在實(shí)例方法內(nèi)部使用它來訪問類的共享成員。
但是在Csharp里竟然無法實(shí)現(xiàn),C#怎樣也不允許我按非虛函數(shù)的方式調(diào)用一個(gè)虛函數(shù)。C++可以用類名::方法名的方式訪問自身版本的函數(shù),但C#的類名只能用來訪問靜態(tài)的成員。這真是C#一個(gè)奇怪的限制。也許是我少見多怪吧.在MSDN中是這么描述的:
MyClass 的行為類似于引用最初實(shí)現(xiàn)時(shí)類的當(dāng)前實(shí)例的對(duì)象變量。VB.NET MyClass與 Me 類似,但對(duì)它的所有方法的調(diào)用都按該方法為 NotOverridable 來處理。因此,所調(diào)用的方法不受派生類中的重寫影響。盡管 DerivedClass 重寫了 MyMethod,但 UseMyClass 中的 MyClass 關(guān)鍵字使重寫的影響無效,編譯器會(huì)將該調(diào)用解析為 MyMethod 的基類版本。
VB.NET MyClass不能在 Shared 方法內(nèi)部使用,但您可以在實(shí)例方法內(nèi)部使用它來訪問類的共享成員。
這點(diǎn)在商業(yè)應(yīng)用中還是很不錯(cuò)的,比如父類為一個(gè)EmployeeBase,包含一個(gè)底薪的數(shù)據(jù),那么在實(shí)例化雇員的Employee中,Dim e1 as new Employee(EmployeeID),增加員工的底薪的時(shí)候,在O/R映像模型建立好之后只需要調(diào)用e1.AddSalary(Salary)方法即可調(diào)用基類的底薪修改方法.(即統(tǒng)一加底薪).個(gè)人意見,呵呵,所得不好,還請(qǐng)大家多多指教.