Visual Basic 开发从入门到精通
上QQ阅读APP看书,第一时间看更新

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规定运算结果采用精度较高的数据类型。

❑ 同一表达式中,不同运算符的优先级是:算术运算符 > 字符运算符 > 关系运算符 >逻辑运算符。