在編程時,會遇到這種情況:代碼中包含一些數值,它們反復出現。而且代碼要用到很難記住的數字,且那些數字沒有明確意義。這種情況下,可以用常數來方便地改進代碼的可讀性和可維護性。常數是用有意義的名字取代經常用到的數值或字符串。盡管常數有點像變量,但不能像對變量那樣對其值進行修改,也就是說對常量賦初值後就不能再次賦值了。常數有兩種來源:
1.內部的或系統定義的常數是由應用程序和控件提供的。這些常數是在Visual Basic對象庫中定義的。
2.用戶定義的常數是用const語句來聲明的。
來自Visual Basic對象庫的常數由以下形式構成:
NameSpaces1.NameSpaces2.….ConstName,例如:
Microsoft.VisualBasic.MsgBoxStyle.OKOnly是Visual Basic對話框中的一個常數,值為0。
一、自定義常數:
聲明常數的語法是:
[Public|Private|Protected|Friend|Protected Friend] const constname [As type]=expression
參數“constname”是有效的符號名,“expression”由數值常數或字符串常數及運算符組成;但在“expression”中不能使用函數調用。“Const”語句可表示數量、日期和時間:
Const conPi=3.14159265358979
Public Const conMaxPlanets As Integer=9
Const conReleaseDate=#1/1/95#
也可以用Const語句定義字符串常數:
Public Const conVersion="07.10.A"
Const conCodeName="Enigma"
如果用逗號進行分隔,則在一行中可放置多個常數聲明:
Public Const conPi=3.14,conMaxPlanets=9,conWorldPop=6E+09
等號左邊必須是左值,等號右邊的表達式通常是數字或文字串,但也可以是其結果為數或字符串的表達式(盡管表達式不能包含函數調用),甚至可用先前定義過的常數定義新常數。
Const conPi2=conPi*2
當定義常數後,就可將其放置在代碼中,使代碼更可讀。例如:
Const conPi=3.14
Area=conPi*dblr^2
二、避免循環引用
由於常數可以用其他常數定義,因此必須小心,在兩個以上常數之間不要出現循環或循環引用。當程序中有兩個以上的公用常數,而且每個常數都用另一個去定義時就會出現循環,例如:
'在Module1中:
Public Const conA=conB*2 '在整個應用程序中有效
'在Module2中:
Public Const conB=conA/2 '在整個應用程序中有效
如果出現循環,在試圖運行此應用程序時,Visual Basic就會產生錯誤信息。不解決循環引用就不能運行程序。為避免出現循環,可將公共常數限制在單一模塊內,或最多只存在於少數幾個模塊內。