一、宣告變數
變數在使用前,必須在**中進行宣告,即建立該變數。
在使用變數之前,首先需要宣告變數。就是說,必須事先告訴編譯器在程式中使用了哪些變數,及這些變數的資料型別以及變數的長度。這是因為在編譯程式執行**之前編譯器需要知道如何給語句變數開闢儲存區,這樣可以優化程式的執行。
宣告變數有兩種方式:隱式宣告、顯式宣告。
隱式宣告:
變數可以不經宣告直接使用,此時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返回當前所...