自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳細(xì)介紹VB.NET MyClass

開發(fā) 后端
這里介紹大部分人使用VB.NET MyClass可能僅限于調(diào)用本類其他構(gòu)造函數(shù)時。其實MyClass可以產(chǎn)生一些很獨特的用法。

學(xué)習(xí)VB.NET時,你可能會遇到VB.NET MyClass問題,這里將介紹VB.NET MyClass問題的解決方法,在這里拿出來和大家分享一下。VB.NET支持一項很有意思的功能——MyClass。大部分人使用VB.NET MyClass可能僅限于調(diào)用本類其他構(gòu)造函數(shù)時。其實MyClass可以產(chǎn)生一些很獨特的用法。MyClass永遠(yuǎn)按類的成員為不可重寫的狀態(tài)進(jìn)行調(diào)用,即當(dāng)類的方法被重寫后,用MyClass仍能得到自身的版本。下面這個例子和VB幫助中所舉的例子非常相似

  1. Public Class MyClassBase  
  2. Protected Overridable Sub Greeting()  
  3. Console.WriteLine("Hello form Base")  
  4. End Sub  
  5.  
  6. Public Sub UseMe()  
  7. Me.Greeting()  
  8. End Sub  
  9.  
  10. Public Sub UseMyClass()  
  11. MyClass.Greeting()  
  12. End Sub  
  13. End Class  
  14.  
  15. Public Class MyClassSub  
  16. Inherits MyClassBase  
  17.  
  18. Protected Overrides Sub Greeting()  
  19. Console.WriteLine("Hello form Sub")  
  20. End Sub  
  21. End Class 

我們用一段代碼來測試:

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

結(jié)果是UseMe執(zhí)行了子類的版本,而UseMyClass還是執(zhí)行了基類本身的版本,盡管這是一個虛擬方法。觀其IL,可以看到其簡單的實現(xiàn)原理:

Me用的調(diào)用指令是callvirt

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

而VB.NET MyClass調(diào)用的是call

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

奇怪的是,如此簡單的一個功能,我竟然無法用C#實現(xiàn),C#怎樣也不允許我按非虛函數(shù)的方式調(diào)用一個虛函數(shù)。C++可以用類名::方法名的方式訪問自身版本的函數(shù),但C#的類名只能用來訪問靜態(tài)的成員。這真是C#一個奇怪的限制。

【編輯推薦】

  1. 原理分析VB.NET開發(fā)控件
  2. 自己動手修改VB.NET支付寶接口
  3. 如何快速掌握VB.NET控件數(shù)組
  4. 描述VB.NET IDisplayer接口
  5. 事例概括VB.NET Display方法
責(zé)任編輯:佚名 來源: CSDN
相關(guān)推薦

2009-10-12 15:02:51

VB.NET動態(tài)控件

2010-01-21 16:45:00

VB.NET繼承規(guī)則

2009-11-10 12:42:47

VB.NET Prin

2010-01-21 14:06:03

VB.NET MyCl

2010-01-08 13:35:35

VB.NET寫Log方

2010-01-08 15:03:12

VB.NET類屬性

2010-01-08 09:43:21

VB.NET漢字轉(zhuǎn)換

2009-11-10 12:48:17

VB.NET三維模型

2010-01-14 18:22:05

VB.NET硬盤速度測

2010-01-22 14:19:38

VB.NET調(diào)用jar

2010-01-08 14:14:27

VB.NET使用Fin

2010-01-13 16:15:47

VB.NET消息隊列

2009-10-12 13:54:22

VB.NET Data

2009-10-13 17:03:55

VB.NET面向?qū)ο?/a>

2009-11-02 15:45:03

VB.NET IEnu

2010-01-07 15:18:10

VB.NET常量

2009-10-10 16:44:52

VB.NET開發(fā)控件

2009-11-10 10:28:20

VB.NET誕生

2010-01-07 15:25:11

VB.NET數(shù)組

2010-01-22 10:41:33

VB.NET聲明結(jié)構(gòu)
點贊
收藏

51CTO技術(shù)棧公眾號