成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

剖析VB.NET面向對象原理

開發 后端
這里就VB.NET面向對象展開全面的講解,VB.NET面向對象可以讓你用一個特定的名字定義多個方法或屬性,只要它們的參數定義不同。

VB.NET經過長時間的發展,很多用戶都很了解VB.NET了,這里我發表一下個人理解,和大家討論討論。促使我們從VB6轉向VB.NET的一個***的原因就是VB.NET面向對象編程(OOP)這一概念的完全支持。然而,要運用這個功能,只學習一些新的關鍵字是遠遠不夠的。面對這么多可供選擇的新的功能,你可能會感到困惑。因此,我將在本文中說明如何在你的應用程序中運用面向對象的功能。我不會深入講述每個新的功能(要進行深入講述,用整本雜志的篇幅都不夠),另外我也提供了代碼例子,在可執行的代碼中有注釋,它們有助于你對一般概念的理解。你可能對我用的一些詞不太熟悉,因此我提供了一個最常用的OOP術語表(見工具條“OOP術語表”)。

#T#你在應用程序中可能會經常用到的***個面向對象的語言的特征是方法重載(method overloading)。VB.NET面向對象可以讓你用一個特定的名字定義多個方法或屬性,只要它們的參數定義不同;這就是說,它們的參數的數量或類型必須是不同的。例如,一個類可以定義一個GetItem方法,它帶有的參數可以是一個數字或字符串,我們根據參數類型來返回元素:

  1. Function GetItem(ByVal index As _  
  2. Integer) As Object  
  3. ' return an element by its index  
  4. End Property  
  5.  
  6. Function GetItem(ByVal key As String) _  
  7. As Object  
  8. ' return an element by its key  
  9. End Property  

編譯器通過查看參數的類型來調用正確的版本:

  1. res = obj.GetItem(1) ' numeric key  
  2. res = obj.GetItem("Joe") ' string key 

當你有一個可以采用任何數據類型的很普通的方法時,方法重載尤其有用——例如,一個將參數值添加到一個文本文件的Log方法。你可能想定義一個采用 Object參數的單獨的版本,因為你想將任何類型的數據傳遞到這個方法: 然而,如果你將一個值類型的參數(一個數字、日期/時間、一個布爾值或一個結構)傳遞到一個Object參數,那么你就暗中強加了一個封裝操作。.NET runtime必須用一個對象來封裝值——這么做就會從托管堆(managed heap)分配內存,而且浪費了寶貴的CPU周期。

  1. Sub Log(ByVal value As Object)  
  2.  TW is a TextWriter object  tw.Write("LOG:" & value.ToString())  End Sub   

一個更好的方法就是為你支持的每種數據類型定義同一個方法的重載的版本。如果你不想為每種可能的參數類型寫代碼,你可以實現一個采用Long參數的版本(它可以處理Boolean、Short、Integer和Long類型的值)、一個采用Double參數的版本(它也可以處理Single類型的值)和另外兩個分別采用DateTime值和Decimal參數的重載的版本。這四種版本可以處理最常用的值類型,而讓采用一個Object參數的重載的版本來處理引用類型(如字符串)或更特殊的對象(如Person)。將一個字符串或一個特殊的對象傳遞到采用一個Object參數的版本不會增加CPU的費用,因為它沒有強加封裝操作。

VB.NET面向對象構造器提供了強大的類
在創建一個類庫時,你應該用多個重載的方法,而不要用采用可選參數的一個單獨的方法,因為有些.NET語言(C#最明顯)不能識別可選參數。記住,兩個重載的方法的不同不僅體現在它們的返回值或你用于每個參數前的ByVal/ByRef關鍵字上。(ByVal/ByRef關鍵字適用于VB.NET和其它一些.NET語言;C#可以讓你定義兩個只在ref或out關鍵字上有區別的方法。)

接下來我們要探究的一個面向對象的特征就是構造器(constructor)。VB.NET構造器是一個名為Sub New的過程,當客戶端創建類的一個實例時,就會調用這個過程。如果你的代碼不包含一個明確的構造器,VB.NET編譯器就會自動添加一個缺省的構造器 ——一個不帶任何參數的構造器。如果沒有明確的(explicit)或隱含的(implicit)構造器,你就不能實例化類。VB.NET也可以讓你定義一個帶有參數的構造器,所以你可以讓客戶端實例化在有效狀態創建對象所必需的字段:

  1. ' a read-only field can be set only  
  2. ' from inside a constructor procedure  
  3. Public ReadOnly Filename As String  
  4. Sub New(ByVal filename As String)  
  5. ' ensure filename isn't null  
  6. If filename Is Nothing OrElse _  
  7. Filename.Length = 0 Then  
  8. Throw New ArgumentException("Invalid file name")  
  9. End If  
  10. ' assign to the read-only field  
  11. Me.FileName = filename 
  12. End Sub 

帶有參數的多個構造器通常有共同的代碼——例如,驗證一個或多個參數的代碼。這時候,你就可以簡化你的類的結構,讓一個構造器調用另一個構造器:

  1. Public ReadOnly Overwrite As Boolean  
  2. Sub New(ByVal filename As String, _  
  3. ByVal overwrite As Boolean)  
  4. ' a call to another constructor MUST  
  5. ' be the first executable statement  
  6. Me.New(filename)  
  7. ' assign remaining fields  
  8. Me.Overwrite = overwrite 
  9. End Sub 

當你既需要缺省的構造器,也需要一個或多個帶有參數的構造器時,就會出現一個有趣的問題。在這種情況下,你必須明確聲明一個空的Sub New過程,因為編譯器不會自動為你創建它:

  1. Sub New()  
  2. ' no need to add code here  
  3. End Sub  
責任編輯:田樹 來源: 博客
相關推薦

2009-10-13 17:03:55

VB.NET面向對象

2010-01-21 12:55:08

VB.NET對象序列

2009-10-12 16:51:28

VB.NET使用Ora

2010-01-13 11:18:24

VB.NET面向對象

2009-11-02 16:41:55

VB.NET串行化對象

2009-10-22 10:10:20

VB.NET Proc

2009-10-21 16:00:26

VB.NET CASE

2009-10-23 13:14:38

2009-06-29 10:50:18

VB.NET面向對象能力

2009-10-13 14:19:03

VB.NET面向對象編

2009-10-13 11:28:39

VB.NET面向對象編

2009-11-03 10:09:48

VB.NET對象

2009-10-20 17:38:20

VB.NET exce

2009-10-13 15:09:19

VB.NET使用Tre

2009-10-09 15:59:41

VB.NET對象

2009-10-14 13:21:46

VB.NET Acco

2009-11-04 13:12:33

VB.NET面向對象編

2010-01-12 11:47:09

VB.NET可選參數

2009-10-29 11:41:27

VB.NET寫Obje

2009-10-15 17:50:48

VB.NET調用API
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕不卡在线观看 | 秋霞电影一区二区三区 | 粉嫩一区二区三区四区公司1 | 国产高清视频在线观看 | 成人在线一区二区三区 | 亚洲啪啪| 91亚洲国产成人精品一区二三 | 在线观看av网站永久 | 91精品国产乱码久久久久久久久 | 欧美一级淫片免费视频黄 | 欧美激情久久久 | 成人激情视频 | 久久天堂| 激情av在线 | www.色53色.com| 国产日韩精品一区二区 | 中文字幕成人av | 国外成人免费视频 | 亚洲第一在线 | 日韩欧美精品一区 | 欧美日韩免费一区二区三区 | 欧美视频在线播放 | 一级aaaaaa毛片免费同男同女 | 久久免费福利 | 欧美国产一区二区 | 精品国产精品三级精品av网址 | 国产又爽又黄的视频 | 欧美三级在线 | 日韩高清中文字幕 | 免费成人高清在线视频 | 欧美成人一区二区 | 日韩欧美国产一区二区 | www..99re | 国产成人免费视频网站高清观看视频 | 五月天综合影院 | 欧美日韩在线播放 | 日韩一区二区三区四区五区六区 | 精品一二三区在线观看 | av电影一区 | 精品三级在线观看 | 国产在线色 |