VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > VB.net教程 >
  • vb.net教程之vb.net的变量

vb.net的变量

(相关vb.net教程)

在Visual Basic执行应用程序期间,用变量临时存储数值。变量具有名字(用来引用变量所包含的值的词)和数据类型(确定变量能够存储的数据的种类)。可以把变量看作内存中存放未知值的所在处。例如,假定正在为水果命铺编一个销售苹果的程序。在销售实际发生之前并不知道苹果的价格和销量。此时,可以设计两个变量来保存未知数,将它们命名为“ApplePrice”和“ApplesSold”。每次运行程序时,用户就这两个变量提供具体值。为了计算总的销售额,并且将结果显示在名叫“txtSales”的文本框中,代码应该是这样的:
    txtSales.txt=ApplePrice*ApplesSold
每次根据用户提供的数值,这个表达式返回不同的金额。由于有了变量,就可以设计一个算式,而不必事先知道实际的输入是多少。在这个例子中,“ApplePrice”的数据类型是十进制型,而“ApplesSold”的数据类型是整数。变量还可以表示许多其他数值,比如:存储文本数值、日期、各种数值类型,甚至对象也包括在内。
1.存储和检索变量中的数据
用赋值语句进行计算,并将结果赋予变量:
    ApplesSold=10 '将值10传给变量
    ApplesSold=ApplesSold+1 '变量值增一
注意:例子中的等号是赋值符,不是等于操作符,它将数值10赋予变量ApplesSold。
2.声明变量
声明变量就是事先将变量通知程序。要用“Dim”语句来声明变量,“Dim”语句提供了变量名:
    Dim Variablename As Type
在过程内部用“Dim”语句声明的变量,只有在该过程执行时才存在。过程一结束,存储该变量的内存空间也就释放了。此外,过程中的变量值对过程来说是局部的,也就是说,无法在一个过程中访问另一个过程中的变量。由于这些特点,在不同过程中就可使用相同的变量名,而不必担心冲突发生以及编译时出现错误。
变量名有以下命名原则:
·必须以字母开头
·不能包含嵌入的(英文)句号或者嵌入的类型声明字符
·不得超过255个字符
·在同一个范围内必须是惟一的
范围就是可以引用变量的域,如一个过程、一个函数等。由于“Dim”语句中的可选的“As Type”子句,可以定义被声明变量的数据类型或对象类型。数据类型定义了变量所存储信息的类型。变量也可以包含来自Visual Basic或其他应用程序的对象,如“Form”和“TextBox”等。
注意:“As Type”在默认的情况下是必写的,如果要将“As Type”变成可选的,则需将工程属性页中的“Build”选项中“Option strict”设置为“Off”,这样在没有“As Type”的变量声明中,“Object”类型是其默认的数据类型。
(1).隐式声明
将工程属性页中的“Build”选项中“Option strict”设置为“Off”,则工程中便允许陷式声明,即在使用一个变量之前并不必先声明这个变量。例如,可以书写这样一个函数,在其中就不必在使用变量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遇到新名字,它分辩不出这是变量名写错了,于是用这个名字再创建一个新的变量。
(2).显式声明
为了避免写错变量名引起的麻烦,可以规定,只要遇到一个未经明确声明就当成变量的名字,Visual Basic都发出错误警告。要显式声明,只需将工程属性页中的“Build”选项中的“Option Explicit”设置为“on”即可。如果对包含“SafeSqr”函数的窗体或标准模块执行该语句,那么Visual Basic将认定“TempVal”和“Temval”都是未经声明的变量,并为两者都发出错误信息。随后就可以显式声明“TempVal”:
Function SafeSqr(num)
    Dim TempVal
    TempVal=Abs(num)
    SafeSqr=Sqr(TempVal)
End Function
因为Visual Basic对拼错了的“TemVal”显示错误信息,所以能够立刻明白是什么问题。由于“Option Explicit”有助于编译系统的出错处理,所以一般来说在编写代码之前要将其设置为“on”.
3.理解变量的范围
变量的范围确定了能够访问该变量存在的那部分代码。在一个过程内部声明变量时,只有过程内部的代码才能访问或改变那个变量的值;它有一个范围,对该过程来说是局部的。但是,有时需要使用具有更大范围的变量,例如这样一个变量,其值对于同一模块内的所有过程都有效,甚至对于整个应用程序的所有过程都有效。Visual Basic允许在声明变量时指定它的范围。
4.过程内部使用的变量
过程级变量只有在声明它们的过程中才能被识别,它们又被称为局部变量。用“Dim”关键字来声明它们,例如:
    Dim intTemp As Integer
在整个应用程序运行时,用“Dim”声明的变量只在过程执行期间才存在。对任何临时计算来说,局部变量是最佳选择。例如,可以建立十几个不同的过程,每个过程都包含称作“intTemp”的变量。只要每个“intTemp”都声明为局部变量,那么每个过程只识别它自己的“intTemp”版本。任何一个过程都能够改变它自己的局部的“intTemp”变量的值,而不会影响到别的过程中的“intTemp”变量。
5.模块内部使用的变量
按照缺省规定,模块级变量对该模块的所有过程都可用,但对其他模块的代码不可用。可在模块顶部的声明段用Private关键字声明模块级变量,从而建立模块级变量。例如:
     Private intTemp As integer
在模块级,“Private”和“Dim”之间没有什么区别,但“Private”更好些,因为很容易把它和“Public”区别开来,使代码更容易理解。
所有模块使用的变量
为了使模块级的变量在其他模块中也有效,用“Public”关键字声明变量。公用变量中的值可用于应用程序的所有过程。和所有模块级变量一样,也在模块顶部的声明段来声明公用变量,例如:
    Public intTemp As Integer
注意:不能在过程中声明公用变量,只能在模块的声明段中声明公用变量。
6.静态变量
变量有其生存的周期,在这一期间变量能够保持它们的值。在应用程序的存活期内一直保持模块级变量和公用变量的值。但是,对于“Dim”声明的局部变量以及声明局部变量的过程,仅当过程在执行时这些局部变量才存在。通常,当一个过程执行完毕,它的局部变量的值就已经不存在,而且变量所占据的内存也被释放。当下一次执行该过程时,它的所有局部变量将重新初始化。但可将局部变量声明定义成静态的,从而保留变量的值。在过程内部用“Shared”关键字声明一个或多个变量,其用法与“Dim”语句完全一样:
    Shared Depth
例如,下面的函数将存储在静态变量“Accumulate”中的以前的运营总值与一个新值相加,以计算运营总值。
Function RunningTotal(num)
    shared ApplesSold As Integer
    ApplesSold=ApplesSold+num
    RunningTotal=ApplesSold
End Function
如果用“Dim”而不是“Shared”声明“ApplesSold”,则以前的累计值不会通过调用函数保留下来,函数只会简单地返回调用它的那个相同值。在模块的声明段声明“ApplesSold”,并使它成为模块级变量,由此也会收到同样的效果。但是,这种方法一旦改变变量的范围,过程就不再对变量排他性存取。由于其他过程也可以访问和改变变量的值,所以运营总值也许不可靠,代码将更难于维护。
注意:Visual Basic以前版本是用“Static”关键字来声明变量,在vb.net中"Shared"关键字取代了“Static”关键字,静态变量要慎用,因为一旦声明了静态变量,这个变量就会常驻内存,如果声明的静态变量很多,有可能影响系统的性能。

相关教程