簡單討論VB.NET使用缺省屬性
VB.NET還是比較常用的,于是我研究了一下VB.NET使用缺省屬性,在這里拿出來和大家分享一下,希望對大家有用。在VB6中創(chuàng)建類的時候,我們可以為類聲明一個缺省的方法或者屬性。具體做法可以菜單選項:Tools(工具)->Procedure Attributes(過程屬性)并設(shè)置Procedure ID為缺省值。
VB.NET用兩種方法改變了這種行為。***,使用一個缺省的關(guān)鍵字來創(chuàng)建缺省屬性,使得聲明更加清晰直觀。但是,VB.NET還給缺省屬性引入了一種新的限制,即屬性必須是一個屬性陣列。
屬性陣列實際上就跟數(shù)組一樣,有一個索引。在選擇或者列表對象中的項目屬性就是一個例子:
- strText = MyList.Item(5)
這個項目屬性沒有單一的數(shù)值,而是有一組的屬性,它們可以通過索引來訪問。通過使用屬性陣列作為缺省屬性,我們就允許程序語言避免了在VB.NET使用缺省屬性的多義性。正如我們在VB6中所知道的,關(guān)鍵字Set的限制是關(guān)鍵。下面再看看以下的語句:
- MyValue = MyObject
這句是指對象MyObject還是指它的缺省屬性呢?為了識別它,在VB6中使用了Set命令來處理對象,如不使用Set就是指缺省屬性。在VB.NET中這條語句是指對象,因為缺省屬性是要被索引的。為了得到缺省屬性,我們要編寫以下代碼:
- MyValue = MyObject(5)
因為索引是一個清楚的指示器(我們指缺省屬性,而不是MyObject本身),所以就不會有多義的存在了。VB.NET這樣的改變就意味著屬性陣列過程必須接收一個參數(shù)。例如:
- 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更清楚,但也會丟失了一些靈活性。在過去,我們喜歡VB.NET使用缺省屬性。舉個例子,我們在用GUI控件的時候經(jīng)常VB.NET使用缺省屬性,比如缺省的文本屬性。
- TextBox1 = MyText
但是這在VB.NET中已經(jīng)不再有效,因為文本屬性不再是一個屬性陣列,相反地我們必須使用屬性名字。
【編輯推薦】