VisualBasicCOM基礎講座之屬性
屬性操作很像公共變量,但屬性還有更多的控制。
常用屬性通常包括"Get(獲取)"和"Let(設置)"兩種。這兩項操作能規定一個主要屬性,就像下面的代碼片段:
上述代碼的工作方式極像Age變量的操作。當像下面語句操作變量時,
就好比運行Let屬性,并將4賦給vNewValue。當像下面語句操作變量時,
是獲取屬性,就好比運行Get屬性,并將相應的值由intAge返回。因此,我們可以這樣認為:
所謂Get屬性,就是運行后獲取某個值;
所謂Let屬性,就是運行后讓某個屬性等于某個值;
但至此為止,我們僅僅說明屬性工作方式與標準變量極為相似,還沒有來得及對屬性進行更多的控制。所以,下面就來討論。
打開上一節的工程,對CDog類進行如下修改:
從CDog類中去掉Age變量;
添加下列代碼:
與前面的代碼相比,這里只是對Let屬性代碼作稍加修改。下面對其作小小的測試,假想用戶試圖想使:
也就是運行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"是怎樣運行的?
在下一節中,我們不僅要討論使用更多屬性的方式,而且還討論如何隨意創建它們。
常用屬性通常包括"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"是怎樣運行的?
在下一節中,我們不僅要討論使用更多屬性的方式,而且還討論如何隨意創建它們。