屬性操作很像公共變量,但屬性還有更多的控制。
常用屬性通常包括"Get(獲取)"和"Let(設(shè)置)"兩種。這兩項操作能規(guī)定一個主要屬性,就像下面的代碼片段:
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變量的操作。當(dāng)像下面語句操作變量時,
MyDog.Age = 4
就好比運行Let屬性,并將4賦給vNewValue。當(dāng)像下面語句操作變量時,
MsgBox MyDog.Age
是獲取屬性,就好比運行Get屬性,并將相應(yīng)的值由intAge返回。因此,我們可以這樣認(rèn)為:
所謂Get屬性,就是運行后獲取某個值;
所謂Let屬性,就是運行后讓某個屬性等于某個值;
但至此為止,我們僅僅說明屬性工作方式與標(biāo)準(zhǔn)變量極為相似,還沒有來得及對屬性進(jìn)行更多的控制。所以,下面就來討論。
打開上一節(jié)的工程,對CDog類進(jìn)行如下修改:
從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,則什么也不會發(fā)生,屬性退出且沒有任何賦值。當(dāng)然,我們也可以對此給出相應(yīng)的錯誤代碼或是顯示一個提示對話框。
切換到Form1后面的代碼窗口;
在設(shè)置Age屬性代碼處的第一行語句中單擊鼠標(biāo),并按F9;
MyDog.Age = 4
在獲取Age屬性代碼處的第一行語句中單擊鼠標(biāo),并按F9;
MsgBox MyDog.Name & " is " & MyDog.Age & " years old"
現(xiàn)在讓我們測試一下:
按F5運行程序;
單擊Command按鈕;
代碼應(yīng)該中斷在按F9添加的斷點的代碼行上。
當(dāng)代碼中斷后,按F8單步運行并觀察結(jié)果;
現(xiàn)在明白它們是怎樣工作的嗎?注意Age屬性的"get"和"let"是怎樣運行的?
在下一節(jié)中,我們不僅要討論使用更多屬性的方式,而且還討論如何隨意創(chuàng)建它們。
常用屬性通常包括"Get(獲取)"和"Let(設(shè)置)"兩種。這兩項操作能規(guī)定一個主要屬性,就像下面的代碼片段:
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變量的操作。當(dāng)像下面語句操作變量時,
MyDog.Age = 4
就好比運行Let屬性,并將4賦給vNewValue。當(dāng)像下面語句操作變量時,
MsgBox MyDog.Age
是獲取屬性,就好比運行Get屬性,并將相應(yīng)的值由intAge返回。因此,我們可以這樣認(rèn)為:
所謂Get屬性,就是運行后獲取某個值;
所謂Let屬性,就是運行后讓某個屬性等于某個值;
但至此為止,我們僅僅說明屬性工作方式與標(biāo)準(zhǔn)變量極為相似,還沒有來得及對屬性進(jìn)行更多的控制。所以,下面就來討論。
打開上一節(jié)的工程,對CDog類進(jìn)行如下修改:
從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,則什么也不會發(fā)生,屬性退出且沒有任何賦值。當(dāng)然,我們也可以對此給出相應(yīng)的錯誤代碼或是顯示一個提示對話框。
切換到Form1后面的代碼窗口;
在設(shè)置Age屬性代碼處的第一行語句中單擊鼠標(biāo),并按F9;
MyDog.Age = 4
在獲取Age屬性代碼處的第一行語句中單擊鼠標(biāo),并按F9;
MsgBox MyDog.Name & " is " & MyDog.Age & " years old"
現(xiàn)在讓我們測試一下:
按F5運行程序;
單擊Command按鈕;
代碼應(yīng)該中斷在按F9添加的斷點的代碼行上。
當(dāng)代碼中斷后,按F8單步運行并觀察結(jié)果;
現(xiàn)在明白它們是怎樣工作的嗎?注意Age屬性的"get"和"let"是怎樣運行的?
在下一節(jié)中,我們不僅要討論使用更多屬性的方式,而且還討論如何隨意創(chuàng)建它們。

