top
Loading...
VisualBasicCOM基礎講座之屬性
屬性操作很像公共變量,但屬性還有更多的控制。

常用屬性通常包括"Get(獲取)"和"Let(設置)"兩種。這兩項操作能規定一個主要屬性,就像下面的代碼片段:



Private intAge As Integer
Public Property Get Age() As Integer
Age = intAge
End Property

Public Property Let Age(ByVal vNewValue As Integer)
intAge = vNewValue
End Property

上述代碼的工作方式極像Age變量的操作。當像下面語句操作變量時,

MyDog.Age = 4

就好比運行Let屬性,并將4賦給vNewValue。當像下面語句操作變量時,

MsgBox MyDog.Age

是獲取屬性,就好比運行Get屬性,并將相應的值由intAge返回。因此,我們可以這樣認為:

所謂Get屬性,就是運行后獲取某個值;

所謂Let屬性,就是運行后讓某個屬性等于某個值;

但至此為止,我們僅僅說明屬性工作方式與標準變量極為相似,還沒有來得及對屬性進行更多的控制。所以,下面就來討論。

打開上一節的工程,對CDog類進行如下修改:

從CDog類中去掉Age變量;

添加下列代碼:

FACE="Courier" SIZE=2>

Private intAge As Integer
Public Property Get Age() As Integer
Age = intAge
End Property

Public Property Let Age(ByVal vNewValue As Integer)
If vNewValue <= 50 Then
intAge = vNewValue
End If
End Property

與前面的代碼相比,這里只是對Let屬性代碼作稍加修改。下面對其作小小的測試,假想用戶試圖想使:

MyDog.Age=30

也就是運行Let屬性,使vNewValue等于30。代碼中,還檢測vNewValue是否小于或等于50。顯然,30是符合要求的,因此實例中的intAge值等于30。但如果超過50,則什么也不會發生,屬性退出且沒有任何賦值。當然,我們也可以對此給出相應的錯誤代碼或是顯示一個提示對話框。

切換到Form1后面的代碼窗口;

在設置Age屬性代碼處的第一行語句中單擊鼠標,并按F9;

MyDog.Age = 4

在獲取Age屬性代碼處的第一行語句中單擊鼠標,并按F9;

MsgBox MyDog.Name & " is " & MyDog.Age & " years old"

現在讓我們測試一下:

按F5運行程序;

單擊Command按鈕;

代碼應該中斷在按F9添加的斷點的代碼行上。

當代碼中斷后,按F8單步運行并觀察結果;

現在明白它們是怎樣工作的嗎?注意Age屬性的"get"和"let"是怎樣運行的?

在下一節中,我們不僅要討論使用更多屬性的方式,而且還討論如何隨意創建它們。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗