2.7 技术解惑
2.7.1 公用变量与局部变量的比较
在不同的范围内也可以有同名变量。例如,可以有名为Temp的公用变量,然后在过程中声明名为Temp的局部变量。在过程内通过引用名字Temp来访问局部变量,而在过程外则通过引用名字Temp来访问公用变量。通过用模块名限定模块级变量就可在过程内访问这样的变量。
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的值设置成 1 End Sub Private Sub Command1_Click () Test End Sub
一般说来,当变量名称相同而范围不同时,局限性大的变量总会用“阴影”遮住局限性不太大的变量(即优先访问局限性大的变量)。所以,如果还有名为Temp的过程级变量,则它会用“阴影”遮住模块内部的公用变量Temp。
2.7.2 体会静态变量
除了范围之外,变量还有存活期,在这一期间变量能够保持它们的值。在应用程序的存活期内一直保持模块级变量和公用变量的值。但是,对于Dim声明的局部变量以及声明局部变量的过程,仅当过程在执行时这些局部变量才存在。通常,当一个过程执行完毕,它的局部变量的值就已经不存在,而且变量所占据的内存也被释放。当下一次执行该过程时,它的所有局部变量将重新初始化。
但是可以将局部变量定义成静态的,从而保留变量的值。在过程内部用Static关键字声明一个或多个变量,其用法和Dim语句完全一样。
Static Depth
例如,下面的函数将存储在静态变量Accumulate中的以前的运营总值与一个新值相加,以计算运营总值。
Function RunningTotal (num) Static ApplesSold ApplesSold = ApplesSold + num RunningTotal = ApplesSold End Function
如果用Dim而不用Static声明ApplesSold,则以前的累计值不会通过调用函数保留下来,函数只会简单地返回调用它的那个相同值。
2.7.3 标识符本身的原则
Visual Basic 6.0标识符的含义比较容易理解,但是在具体使用时必须遵循它本身的原则。具体说明如下所示。
❑ 只能由字母、数字和下划线组成。
❑ 第一个字符必须是字母。
❑ 标识符的长度不能超过255个字符。
❑ 自定义的标识符不能和程序内的运算符、函数和过程名的关键字相同,也不能和系统对象的方法和属性同名。
❑ Visual Basic 6.0标识符不区分大小写。
2.7.4 Visual Basic表达式的特点
Visual Basic表达式有如下5个特点。
❑ 乘号不能省略。
❑ 括号必须成对出现,均使用圆括号,可以嵌套,但必须配对。
❑ 表达式从左到右在同一基准上书写,无高低、大小之分。
❑ 操作数的数据类型应该符合要求,不同的数据应该转换成同一类型。在算术运算中,如果操作数的数据精度不同,VB规定运算结果采用精度较高的数据类型。
❑ 同一表达式中,不同运算符的优先级是:算术运算符 > 字符运算符 > 关系运算符 >逻辑运算符。