淺析VB.NET方法創建
VB.NET有很多值得學習的地方,這里我們主要介紹VB.NET方法創建,包括介紹創建方法,缺省的屬性等方面的介紹。在VB.NET中方法的創建還是跟在VB6中的一樣,你可以使用Sub或者Function關鍵字。Sub和Function的區別是:用Sub來創建一個方法,它將不返回數值;若是利用Function來創建一個方法,它將返回一個數值作為結果。例如VB.NET方法創建:
- Sub MyWorks()
- End Sub
- Function MyValue() As Integer
- End Function
#T#在VB.NET中我們仍可以使用轄域關鍵字,這跟在VB 6中的差不多,只是多了Protected。具體的轄域關鍵字有:
Private表明只能調用類中的代碼;
Friend 表明可以在我們的工程/組件中調用代碼;
Public 表明可以在我們的類外部調用代碼;
Protected是VB.NET新增的,這個我們將在討論繼承的時候再具體闡述。
Protected Friend 表明只能在我們的工程/組件調用代碼以及我們的Subclass的代碼。同樣我們將在討論繼承的時候再具體闡述。
缺省地,方法的參數是聲明為ByVal而不是ByRef。當然,我們仍然可以通過使用ByRef關鍵字來重載這個缺省的行為。
VB.NET方法創建屬性
以前我們創建屬性的時候是使用Property Get和Property Let,但現在在VB.NET中已經將它集成到一個結構中去了。例子如下:
- Private mystrName As String
- Public Property Name() As String
- Get
- Return mystrName
- End Get
- Set
- mystrName = Value
- End Set
- End Property
VB.NET方法缺省的屬性
在VB6中創建類的時候,我們可以為類聲明一個缺省的方法或者屬性。具體做法可以菜單選項:Tools(工具)->Procedure Attributes(過程屬性)并設置Procedure ID為缺省值。
VB.Net用兩種方法改變了這種行為。***,使用一個缺省的關鍵字來創建缺省的屬性,使得聲明更加清晰直觀。但是,VB.NET還給缺省的屬性引入了一種新的限制,即屬性必須是一個屬性陣列。
屬性陣列實際上就跟數組一樣,有一個索引。在選擇或者列表對象中的項目屬性就是一個例子:
- strText = MyList.Item(5)
這個項目屬性沒有單一的數值,而是有一組的屬性,它們可以通過索引來訪問。
通過使用屬性陣列作為缺省屬性,我們就允許程序語言避免了在使用缺省屬性的多義性。正如我們在VB6中所知道的,關鍵字Set的限制是關鍵。下面再看看以下的語句:
- MyValue = MyObject
這句是指對象MyObject還是指它的缺省屬性呢?為了識別它,在VB6中使用了Set命令來處理對象,如不使用Set就是指缺省的屬性。在VB.NET中這條語句是指對象,因為缺省的屬性是要被索引的。為了得到缺省的屬性,我們要編寫以下代碼:
- MyValue = MyObject(5)
因為索引是一個清楚的指示器(我們指缺省的屬性,而不是MyObject本身),所以就不會有多義的存在了。
VB.NET這樣的改變就意味著屬性陣列過程必須接收一個參數。例如
- Private MyMoney(100) As String
- Default Public Property Money(ByVal Index As Integer) As String
- Get
- Money = MyMoney(index)
- End Get
- Set
- MyMoney(index) = Value
- End Set
- End Property
***,看起來這些代碼比VB6更清楚,但也會丟失了一些靈活性。在過去,我們喜歡使用缺省的屬性。舉個例子,我們在用GUI控件的時候經常使用缺省的屬性,比如缺省的文本屬性。
- TextBox1 = MyText
但是這在VB.NET中已經不再有效,因為文本屬性不再是一個屬性陣列,相反地我們必須使用屬性名字。