Welcome

首页 / 软件开发 / VB / vb变量、常数和数据类型及过程概述(一)

vb变量、常数和数据类型及过程概述(一)2007-05-05在Visual Basic环境下进行计算时,常常需要临时存储数据。例如,可能想要计算几个值,将它们进行比较,并根据比较的结果对它们进行不同的操作。如果想要比较这些值,就要存储它们,但不必把它们存入属性。像大多数编程语言那样,Visual Basic 使用变量来存储值。变量具有名字(用来引用该变量所含的值的名词)和数据类型(确定变量可以存储的数据的种类)。数组可以用来存储建立了索引的相关变量集。
常数也存储数值,顾名思义,在整个应用程序执行过程中,这些值都保持不变。常数的使用增加了代码的可读性,因为我们看到的是具有含义的名字而不是数字。Visual Basic 有许多内部常数,但也可以建立自定义常数。
在Visual Basic中,数据类型控制了数据的内部存储。按照缺省规定,VisualBasic 使用了变体数据类型。在不需要 Variant 提供的灵活性时,还有许多其它可用的数据类型,它们可用来优化代码的速度和大小。

变量
在Visual Basic中执行应用程序期间,用变量临时存储数值。变量具有名字(用来引用变量所包含的值的词)和数据类型(确定变量能够存储的数据的种类)。
可以把变量看作内存中存放未知值的所在处。例如,假定正在为水果铺编一个销售苹果的软件。在销售实际发生之前并不知道苹果的价格和销量。此时,可以设计两个变量来保存未知数,将它们命名为 ApplePrice 和ApplesSold。每次运行程序时,用户就这两个变量提供具体值。为了计算总的销售额,并且将结果显示在名叫 txtSales 的文本框中,代码应该是这样的:
txtSales.txt = ApplePrice * ApplesSold
每次根据用户提供的数值,这个表达式返回不同的金额。由于有了变量,就可以设计一个算式,而不必事先知道实际的输入是多少。
在这个例子中,ApplePrice 的数据类型是货币,而 ApplesSold 的数据类型是整数。变量还可以表示许多其它数值,比如:文本数值、日期、各种数值类型,甚至对象也在此列。

存储和检索变量中的数据
用赋值语句进行计算,并将结果赋予变量:
ApplesSold = 10 "将值 10
"传给变量。
ApplesSold = ApplesSold + 1
"变量值
"增一。
注意,例子中的等号是赋值符,并不是等于操作符;它将数值 (10) 赋予变量 (ApplesSold)。

声明变量
声明变量就是事先将变量通知程序。要用Dim语句声明变量,Dim 语句提供了变量名:
Dim variablename [As type]
在过程内部用Dim语句声明的变量,只有在该过程执行时才存在。过程一结束,该变量的值也就消失了。此外,过程中的变量值对过程来说是局部的,也就是说,无法在一个过程中访问另一个过程中的变量。由于这些特点,在不同过程中就可使用相同的变量名,而不必担心有什么冲突和意想不到变故。
变量名:
1.必须以字母开头。
2.不能包含嵌入的(英文)句号或者嵌入的类型声明字符。
3.不得超过 255 个字符。
4.在同一个范围内必须是唯一的。范围就是可以引用变量的变化域,如一个过程、一个窗体等等。
由于Dim语句中的可选的 As type 子句,可以定义被声明变量的数据类型或对象类型。数据类型定义了变量所存储信息的类型。String、Integer和Currency 都是数据类型的例子。变量也可以包含来自Visual Basic或其它应用程序的对象。Object、Form1和TextBox 都是Visual Basic对象类型或类的实例。
详细信息 关于对象的更详细的信息,请参阅第九章“用对象编程”和第十章“用部件编程”。在本章后面的“数据类型”部分将详细讨论数据类型。声明变量的其它方式:
不在过程内部,而在窗体、标准或类模块的声明段声明变量,这将使变量对模块中的所有过程有效。
用Public关键字声明变量,这将使变量在整个应用程序中有效。
用Static关键字声明一个局部变量,那么,即使过程结束,变量的值也仍然保留着。

隐式声明
在使用一个变量之前并不必先声明这个变量。 例如,可以书写这样一个函数,在其中就不必在使用变量 TempVal 之前先声
明它:
Function SafeSqr (num)
TempVal = Abs (num)
SafeSqr = Sqr (TempVal)
End Function
Visual Basic 用这个名字自动创建一个变量,使用这个变量时,可以认为它就是显式声明的。虽然这种方法很方便,但是如果把变量名拼错了的话,会导致一个难以查找的错误。例如,假定写了这样一个函数:
Function SafeSqr (num)
TempVal = Abs (num)
SafeSqr = Sqr (TemVal)
End Function
乍看起来,这两段代码好像是一样的。但是因为在倒数第二行把 TempVal 变量名写错了,所以函数总是返回 0。当Visual Basic遇到新名字,它分辨不出这是意味着隐式声明了一个新变量呢,还是仅仅把一个现有变量名写错了,于是只好用这个名字再创建一个新变量。

显式声明
为了避免写错变量名引起的麻烦,可以规定,只要遇到一个未经明确声明就当成变量的名字,Visual Basic 都发出错误警告。 要显式声明变量,请
在类模块、窗体模块或标准模块的声明段中加入这个语句:
Option Explicit
-或-
在“工具”菜单中选取“选项”,单击“编辑器”选项卡,再复选“要求变量声明”选项。这样就在任何新模块中自动插入 Option Explicit 语句,但不会在已经建立起来的模块中自动插入;所以在工程内部,只能用手工方法向现有模块添加 Option Explicit。
如果对包含 SafeSqr 函数的窗体或标准模块执行该语句,那么 Visual Basic将认定 TempVal 和 TemVal 都是未经声明变量,并为两者都发出错误信息。随后就可以显式声明 TempVal。
Function SafeSqr (num)
Dim TempVal
TempVal = Abs (num)
SafeSqr = Sqr (TemVal)
End Function
因为Visual Basic对拼错了的 TemVal 显示错误信息,所以能够立刻明白是什么问题。由于 Option Explicit 语句有助于抓住这些类型的错误,所以最好在所有代码中使用它。
注意 Option Explicit 语句的作用范围仅限于语句所在模块,所以,对每个需要Visual Basic强制显式变量声明的窗体模块、标准模块及类模块,必须将 Option Explicit 语句放在这些模块的声明段中。如果选择“要求变量声明”,Visual Basic 会在后续的窗体模块、标准模块及类模块中自动插入 Option Explicit,但是不会将它加入到现有代码中。必须在工程中通过手工将 Option Explicit 语句加到任何现有模块中。

理解变量的范围
变量的范围确定了能够知晓该变量存在的那部分代码。在一个过程内部声明变量时,只有过程内部的代码才能访问或改变那个变量的值;它有一个范围,对该过程来说是局部的。但是,有时需要使用具有更大范围的变量,例如这样一个变量,其值对于同一模块内的所有过程都有效,甚至对于整个应用程序的所有过程都有效。Visual Basic 允许在声明变量时指定它的范围。

指定变量的有效范围
一个变量在划定范围时被看作是过程级(局部)变量,还是模块级变量,这取决于声明该变量时采用的方式。

过程内部使用的变量
过程级变量只有在声明它们的过程中才能被识别,它们又称为局部变量。用Dim或者Static关键字来声明它们。例如:
Dim intTemp As Integer
- 或者 -
Static intPermanent As Integer
在整个应用程序运行时,用Static声明的局部变量中的值一直存在,而用Dim 声明的变量只在过程执行期间才存在。
对任何临时计算来说,局部变量是最佳选择。例如,可以建立十来个不同的过程,每个过程都包含称作intTemp的变量。只要每个intTemp都声明为局部变量,那么每个过程只识别它自己的intTemp版本。任何一个过程都能够改变它自己的局部的intTemp变量的值,而不会影响别的过程中的intTemp变量。