您好,登錄后才能下訂單哦!
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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。