你的位置:创意公社- ideaer >> >> 程序开发 >> 详细内容 在线投稿

VB编程基础教程6–常数

排行榜 打印 发给朋友 举报 发布者:fi6862
热度328票  浏览110次 【共0条评论】【我要评论 时间:2010年5月12日 05:19
创意公社- ideaer#k:o:?l/i;?

经常会发现代码包含一些常数值,它们一次又一次地反复出现。还可发现,代码要用到很难记住的数字— 而那些数字没有明确意义。
sw r^8kz1在这些情况下,可用常数大幅度地改进代码的可读性和可维护性。常数是有意义的名字,取代永远不变的数值或字符串。尽管常数有点象变量,但不能象对变量那样修改常数,也不能对常数赋以新值。常数有两种来源: 创意公社- ideaer3fM4OC vq1i d
内部的或系统定义的常数是应用程序和控件提供的。在“对象浏览器”中的 visual basic ( vb ) 、和 visual basic for applications ( vba ) 对象库中列举了 visual basic 的常数。其它提供对象库的应用程序,如 microsoft excel 和 microsoft project,也提供了常数列表,这些常数可与应用程序的对象、方法和属性一起使用。在每个 activex 控件的对象库中也定义了常数 关于使用“对象浏览器”的详细信息,请参阅“用对象编程”。创意公社- ideaeryB+Y1C({] T,j
创意公社- ideaern Q)g7Af Y)j.Z
符号的或用户定义的常数是用 const 语句来声明的。下节“创建属于自己的常数”中将说明用户定义的常数。 创意公社- ideaera7\j8g H3pn5},xVd
在 visual basic 中,常数名采用大小写混合的格式,其前缀表示定义常数的对象库名。来自 visual basic 和 visual basic for applications 对象库的常数以 “vb” 开头— 例如vbtilehorizontal。
ra"nI9f1设计前缀时应尽力防止发生意外冲突,不能出现常数名称相同但表示不同数值的情况。即使使用了前缀,两个对象库也仍可能包含表示不同值的相同常数。在这种情况下,引用哪个常数取决于哪个对象库具有更高的优先级。关于改变对象库优先级的信息,请参阅 “引用对话框”部分。创意公社- ideaer!FeZy#a6h(mI1Ig)r&R
为了绝对确保不发生常数名字冲突,可用以下语法来限定对常数的引用:
FUx)p BKTxw+x:J1[libname.][modulename.]constname
1C2{}a_&?)tCS.M1libname 通常是控件或库的类名。modulename 是定义常数的模块的名字。constname 是常数名。在对象库中定义了每个元素,并能在“对象浏览器”中查看元素。创意公社- ideaeri0K'U$^#CbaO
创建属于自己的常数
:erK3j(l8GY#J1声明常数的语法是:
OATYh.?8?4de1[public|private] const constantname[as type] = expression
,T${7Nn6\!]}D1参数 constantname 是有效的符号名(其规则与建立变量名的规则一样),expression 由数值常数或字符串常数以及运算符组成;但在 expression 中不能使用函数调用。
xQl gT/@2}'n1const 语句可以表示数量或 date / time 量:创意公社- ideaerk:D+@a3}W"a
const conpi = 3.14159265358979
6U'D ~1NsT1public const conmaxplanets as integer = 9创意公社- ideaer @7F4Py z^X Hu4mlJ
const conreleasedate = #1/1/95#
3||&V(b7l'[I_;uP1也可用 const 语句定义字符串常数:创意公社- ideaerB`3Y C Ol*Y5WSU6S
public const conversion = “07.10.a”
x\ RXrM)DI3?Z)l1const concodename = “enigma”创意公社- ideaer#fl.P'jn
如果用逗号进行分隔,则在一行中可放置多个常数声明:创意公社- ideaer m `/faxA/@"sz*I!R
public const conpi = 3.14, conmaxplanets = 9, _创意公社- ideaer2J4o6L n$xg
conworldpop = 6e+09
6[%Ylp x9?1等号 ( = ) 右边的表达式往往是数字或文字串,但也可以是其结果为数或字符串的表达式(尽管表达式不能包含函数调用)。甚至可用先前定义过的常数定义新常数。
*o-r r&Et-F4p1const conpi2 = conpi * 2
}Edj6GKy,PR1一旦已定义常数,就可将其放置在代码中,使代码更可读。例如:创意公社- ideaerV _*EYc[
static solarsystem (1 to conmaxplanets)创意公社- ideaer,F.L3e)DJ
if numpeople > conworldpop then exit sub
5J5R;\7y'OU&H1设定用户自定义常数的范围创意公社- ideaery P6U h&K9l;P:K-XF F
和变量声明一样, const 语句也有范围,也使用相同的规则:
Rn1|#C3~'b cZ1为创建仅存在于过程中的常数,请在这个过程内部声明常数。创意公社- ideaer\Y,l0l?P

2u:R"Ud3D9X E1为创建一常数,它对模块中所有过程都有效,但对模块之外任何代码都无效,请在模块的声明段中声明常数。
2\5za7\b ro1创意公社- ideaerR"Hkj6t0g
为创建在整个应用程序中有效的常数,请在标准模块的声明段中进行声明,并在 const 前面放置 public 关键字。在窗体模块或类模块中不能声明 public 常数。 创意公社- ideaerIOdd g!Tv0f$N]
详细信息 关于范围的更详细信息,请参阅本章前面的“理解变量的范围”一节。创意公社- ideaer;uN!a0dddZ,]5I.@
避免循环引用
z|$XYp&Ul/hl1由于常数可以用其它常数定义,因此必须小心,在两个以上常数之间不要出现循环或循环引用。当程序中有两个以上的公用常数,而且每个公用常数都用另一个去定义时就会出现循环。
#i9_"~0_"Nl1例如:
'Q[)i4B[1|QT$d1‘在 module1 中:创意公社- ideaerB&rG@&RwwG4g
public const cona = conb * 2   ’在整个应用程序
nq6w$z8Lr5V(e1                            ‘中有效。
,jB:o,\i"z1’在 module 2:创意公社- ideaer"z'U_*HktTeJm'i
public const conb = cona / 2   ‘在整个应用程序
8||uR%z3s!A6g0Nn1                              ’中有效。创意公社- ideaergt@D Mx
如果出现循环,在试图运行此应用程序时,visual basic 就会产生错误信息。不解决循环引用就不能运行程序。为避免出现循环,可将公共常数限制在单一模块内,或最多只存在于少数几个模块内。创意公社- ideaerB @'mkBg

}*i4I.i6~7O1
顶:5 踩:38
对本文中的事件或人物打分:
当前平均分:-1.96 (119次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.43 (67次打分)
【已经有99人表态】
41票
感动
8票
路过
7票
高兴
7票
难过
7票
搞笑
10票
愤怒
9票
无聊
10票
同情
上一篇 下一篇
发表评论
换一张

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】