變數的宣告和作用域 VB

2021-08-25 14:55:58 字數 3925 閱讀 9770

一、宣告變數

變數在使用前,必須在**中進行宣告,即建立該變數。

在使用變數之前,首先需要宣告變數。就是說,必須事先告訴編譯器在程式中使用了哪些變數,及這些變數的資料型別以及變數的長度。這是因為在編譯程式執行**之前編譯器需要知道如何給語句變數開闢儲存區,這樣可以優化程式的執行。

宣告變數有兩種方式:隱式宣告、顯式宣告。

隱式宣告:

變數可以不經宣告直接使用,此時vb給該變數賦予預設的型別和值。這種方式比較簡單方便,在程式**中可以隨時命名並使用變數,但不易檢查。

顯式宣告:

用宣告語句建立變數。

強制顯式宣告變數:

為了避免寫錯變數名引起的麻煩,使用者可以規定,只要遇到乙個未經明確宣告就當成變數的名字,vb都發出錯誤警告。方法是----強制顯式宣告變數。要強制顯式宣告變數,只須在類模組、窗體模組或標準模組的宣告段中加入這條語句:

option explicit

這條語句是用來規定在本模組中所有變數必須先宣告再使用,即不能通過隱式宣告來建立變數。在新增option explicit語句後,vb將自動檢查程式中是否有未定義的變數,發現後將顯示錯誤資訊。

如果要自動插入option explicit語句,使用者只要在「工具

」選單中選取「選項

」命令,然後單擊「選項

」對話方塊中的

「編輯器

」選項卡,再選中

「要求變數宣告

」選項,如下圖

這樣vb就會在任何新模組中自動插入option explicit語句,但只會在新建立的模組中自動插入。所以對於已經建立的模組,只能用手工方法向現有模組新增option explicit語句(只有再重新啟動vb,這項功能才有效)。

二、變數的作用域

變數的作用域指的是變數的有效範圍。為了能正確地使用變數的值,應當明確可以在程式的什麼地方訪問該變數。vb中變數可以分為3類:區域性(local)變數、模組(module)變數及全域性(public)變數,其中模組變數包括窗體模組變數和標準模組變數。各變數位於不同的層次。

區域性變數

過程級變數只有在宣告它們的過程中才能被識別,它們又稱為區域性變數。

用dim或者static關鍵字來宣告它們,兩者的區別在於:在整個應用程式執行時,用static宣告的區域性變數中的值一直存在,而用dim宣告的變數只在過程執行期間才存在。

對任何臨時計算來說,區域性變數是最佳選擇。例如,可以建立十來個不同的過程,每個過程都包含稱作inttemp的變數(同乙個變數名在不同的過程中意義可能不同)。只要每個inttemp都宣告為區域性變數,那麼每個過程只識別它自己的inttemp版本。任何乙個過程都能夠改變它自己的區域性的inttemp變數的值,而不會影響別的過程中的inttemp變數。

模組變數

按照預設規定,模組級變數對該模組的所有過程都可用,但對其它模組的**不可用。可在模組頂部的宣告段用private或dim關鍵字宣告模組級變數,從而建立模組級變數。例如:

private inttemp as integer

在模組級,private和dim之間沒有什麼區別,但private更好些,因為很容易把它和public區別開來,使**更容易理解。

全域性變數

為了使模組級的變數在其它模組中也有效,用public關鍵字宣告變數。公用變數中的值可用於應用程式的所有過程。和所有模組級變數一樣,也在模組頂部的宣告段來宣告公用變數。例如

public inttemp as integer

注意:不能在過程中宣告公用變數,只能在模組的宣告段中宣告公用變數。

總結以上可知

:宣告語句有如下四種格式,

這四種語句建立了不同特性的變數,下面來作詳細的介紹:

(i)dim

語句,其格式為:

dim<變數名>[as<資料型別>]

程式執行時,上述宣告在記憶體中為變數分配空間,並使visual basic了解隨後要處理資料的資料型別。

dim語句用於在標準模組(module)、窗體模組(form)或過程(procedure)中定義變數或陣列

用dim語句在窗體的過程中宣告的變數稱為

區域性變數

,其作用域僅侷限在本過程內部,過程一旦執行完畢,其值也就消失了。

例如dim number as integer

'宣告number為integer(整型)變數。

dim i as integer,j as integer,k as integer

'同時宣告為整型變數。

dim anyvalue,myvalue

'anyvalue

和myvalue按預設情況被宣告為variant型別,同時值被設為empty(空)。

dim anothervar, choice as boolean, birthdate as date

'在一行中宣告多種型別變數,anothervar為variant型別,因為它的型別被省略了,choice為布林型變數,birthdate為日期型變數。

(2)private

語句.其格式為:

private

<變數名>[as<資料型別>]

如果要在乙個窗體模組的所有過程中共享同乙個變數,則應在這個窗體模組的宣告段用private語句進行宣告.這種變數稱為模組級變數,其作用域為整個窗體模組。這就好比是您家裡的**號碼,它在您所在的城市是通用的,但出了這個範圍就不能單獨使用了。

(3)public

語句,其格式為:

public

<變數名>[as<資料類 ]

用來在標準模組中定義全域性變數或陣列

。如果在標準模組的宣告段中用public關鍵字來宣告模組級變數,那麼這個變數的作用域是整個工程,即它會在整個工程的所有模組中有效,這種變數稱為全域性變數,也稱公用變數。這就好比是加了郵政區號的**號碼,在全國範圍內通用。

(4)static

語句.其格式為:

static

<變數名>[as<資料型別>·

區域性變數在過程執行結束後其值不能被保留下來,在每一次過程重新執行時,變數會被重新初始化。如果希望在該過程結束之後,還能繼續保持過程中區域性變數的值,就應該用static關鍵字將這個變數宣告為靜態變數。這樣,即使過程結束,該靜態變數的值也仍然保留著。

例如我們可以為乙個窗體編寫下面這樣一程式,可以對使用者在窗體上單擊的次數計數並用顯示出來。

private sub form_click()

static i as integer

i = i + 1

label1.caption = i

end sub

再如:

private sub command1_click()

static intcount as integer

intcount = intcount + 1

select case intcount

case 1

command1.caption = "

春眠不覺曉"

case 2

command1.caption = "

處處聞啼鳥"

case 3

command1.caption = "

夜來風雨聲"

case else

command1.caption = "

花落知多少"

intcount = 0

end select

end sub

將static換成dim,執行一下,連續單擊窗體,兩者結果的不同顯而易見。

注意:就像在過程中不能使用public和private關鍵字一樣,在模組的宣告段中不能使用static關鍵字,會報錯。

定義完變數,初值的問題:

整數:0

浮點數:

0.0字串:""

variant

:empty

(保留字,關鍵字)不同與

null,0

,nothing

判斷它有沒有賦值,就看它的值是不是

empty

變數的宣告和作用域 VB

一 宣告變數 變數在使用前,必須在 中進行宣告,即建立該變數。在使用變數之前,首先需要宣告變數。就是說,必須事先告訴編譯器在程式中使用了哪些變數,及這些變數的資料型別以及變數的長度。這是因為在編譯程式執行 之前編譯器需要知道如何給語句變數開闢儲存區,這樣可以優化程式的執行。宣告變數有兩種方式 隱式宣...

VB 變數的宣告及作用域

一 變數的宣告 一般來說,變數必須先宣告後使用。即告訴編譯器在程式中使用了哪些變數,及為變數開闢多大的記憶體空間。宣告變數有兩種方式 隱式宣告 顯式宣告。1隱式宣告 vb的變數可以不經宣告直接使用 但不易檢查錯誤,不建議使用 2顯式宣告 用宣告語句建立變數。格式為 declare 變數名 as 型別...

python 變數宣告和作用域

a 3 1.建立name a 2.建立object 3 3.將name 關聯到3 這個object上 name在建立時必須關聯到乙個object name可以在建立以後指向任何乙個object 包括不同型別 全域性變數和區域性變數 1.globals 返回當前模組的全域性變數,locals返回當前所...