小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

VB編程基礎(chǔ)教程4–高級(jí)變量主題 | 異次元軟件世界

 a_cheng 2009-10-21

VB編程基礎(chǔ)教程4–高級(jí)變量主題

收藏到QQ書(shū)簽 [ 程序樂(lè)園 ]

使用多個(gè)同名的變量
如果不同模塊中的公用變量使用同一名字,則通過(guò)同時(shí)引用模塊名和變量名就可以在代碼中區(qū)分它們。例如,如果有一個(gè)在 form1 和 module1 中都聲明了的公用 integer 變量 intx,則把它們作為 module1.intx 和 form1.intx 來(lái)引用便得到正確值。
為了看清這是如何工作的,在一個(gè)新工程中插入兩個(gè)標(biāo)準(zhǔn)模塊,并在窗體上畫(huà)上三個(gè)命令按鈕。
在第一個(gè)標(biāo)準(zhǔn)模塊 module1 之中聲明一個(gè)變量 intx。test 過(guò)程設(shè)置它的值:
public intx as integer      ‘聲明 module1 的 intx。
sub test ()
   ’設(shè)置 module1 的 intx 變量的值。
   intx = 1  
end sub
在第二個(gè)標(biāo)準(zhǔn)模塊 module2 中聲明了第二個(gè)變量 intx,它有相同的名字。又是名為 test 的過(guò)程設(shè)置它的值:
public intx as integer      ‘聲明了 module2 的 intx。
sub test ()
   ’設(shè)置 module2 的 intx 變量的值。
   intx = 2  
end sub
在窗體模塊中聲明了第三個(gè)變量 intx。名為 test 的過(guò)程又一次設(shè)置它的值。
public intx as integer      ‘聲明了該窗體的 intx 變量。
sub test ()
   ’ 設(shè)置 form 中的 intx 變量值。
   intx = 3
end sub
在三個(gè)命令按鈕的 click 事件過(guò)程中,每一個(gè)都調(diào)用了相應(yīng)的 test 過(guò)程,并用 msgbox 來(lái)顯示這三個(gè)變量的值。
private sub command1_click ()
   module1.test               ‘ 調(diào)用 module1 中的 test。
   msgbox module1.intx         ’ 顯示 module1 的 intx。
end sub
private sub command2_click ()
   module2.test               ‘ 調(diào)用 module2 中的 test。
   msgbox module2.intx         ’ 顯示 module2 的 intx。
end sub
private sub command3_click ()
   test                     ‘ 調(diào)用 form1 中的 test。
   msgbox intx               ’ 顯示 form1 的 intx。
end sub
運(yùn)行應(yīng)用程序,單擊三個(gè)命令按鈕中的每一個(gè)按鈕。于是將看到三個(gè)公用變量被分別引用。注意在第三個(gè)命令按鈕的 click 事件過(guò)程中,在調(diào)用 form1 的 test 過(guò)程時(shí)不必指定 form1.test,在調(diào)用 form1 的 integer 變量的值時(shí)也不必指定 form1.intx 。如果多個(gè)過(guò)程或變量同名,則 visual basic 會(huì)取變化更受限制的值,在這個(gè)例子中,就是 form1 變量。
公用變量與局部變量的比較
在不同的范圍內(nèi)也可有同名的變量。例如,可有名為 temp 的公用變量,然后在過(guò)程中聲明名為 temp 的局部變量。在過(guò)程內(nèi)通過(guò)引用名字 temp 來(lái)訪(fǎng)問(wèn)局部變量;而在過(guò)程外則通過(guò)引用名字 temp 來(lái)訪(fǎng)問(wèn)公用變量。通過(guò)用模塊名限定模塊級(jí)變量就可在過(guò)程內(nèi)訪(fǎng)問(wèn)這樣的變量。
public temp as integer
sub test ()
   dim temp as integer
   temp = 2                  ‘ temp 的值為 2。
   msgbox form1.temp         ’ form1.temp 的值為 1。
end sub
private sub form_load ()
   temp = 1                  ‘ 將 form1.temp 的值設(shè)置成 1。
end sub
private sub command1_click ()
   test  
end sub
一般說(shuō)來(lái),當(dāng)變量名稱(chēng)相同而范圍不同時(shí),局限性大的變量總會(huì)用“陰影”遮住局限性不太大的變量(即優(yōu)先訪(fǎng)問(wèn)局限性大的變量)。所以,如果還有名為 temp 的過(guò)程級(jí)變量,則它會(huì)用“陰影”遮住模塊內(nèi)部的公用變量 temp。
陰影窗體屬性和控件
由于陰影效應(yīng),窗體屬性、控件、常數(shù)和過(guò)程皆被視為窗體模塊中的模塊級(jí)變量。窗體屬性或控件的名稱(chēng)與模塊級(jí)變量、常數(shù)、自定義類(lèi)型或過(guò)程的名稱(chēng)相同是不合法的,因?yàn)樗鼈兊姆秶嗤?br>在窗體模塊內(nèi),和窗體中控件同名的局部變量將遮住同名控件。因此必須引用窗體名稱(chēng)或 me 關(guān)鍵字來(lái)限定控件,才能設(shè)置或者得到該控件的值或它的屬性值。例如:
private sub form_click ()
dim text 1 , backcolor
’假定該窗體有一個(gè)控件也叫做 text1。
   text1 = “variable”       ‘變量用“陰影”遮住控件。
   me.text1 = “control”       ’要得到控件,必須用‘me’限定。
   text1.top = 0          ‘導(dǎo)致出錯(cuò)!
   me.text1.top = 0       ’要得到控件,必須用‘me’限定。
   backcolor = 0          ‘變量用“陰影”遮住屬性。
   me.backcolor = 0       ’要得到窗體屬性,必須用‘me’限定。
end sub
使用同名的變量和過(guò)程
專(zhuān)用模塊級(jí)變量和公共模塊級(jí)變量的名字也會(huì)和過(guò)程名沖突。模塊中的變量不能和任何過(guò)程同名,也不能和模塊中定義的類(lèi)型同名。但可以和公用過(guò)程或其它模塊中定義的類(lèi)型或變量同名。在這種情況下,從別的模塊訪(fǎng)問(wèn)這個(gè)變量時(shí),就必須用模塊名來(lái)限定。
雖然上面討論陰影規(guī)則并不復(fù)雜,但是用陰影的方法可能會(huì)帶來(lái)麻煩,而且會(huì)導(dǎo)致難以查找的錯(cuò)誤。因此,對(duì)不同的變量使用不同的名稱(chēng)才是一種好的編程習(xí)慣。在窗體模塊中應(yīng)盡量使變量名和窗體中的控件名不一樣。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多