-
vb.net教程之vb.net的变量
vb.net的变量
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”关键字,静态变量要慎用,因为一旦声明了静态变量,这个变量就会常驻内存,如果声明的静态变量很多,有可能影响系统的性能。
(相关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”关键字,静态变量要慎用,因为一旦声明了静态变量,这个变量就会常驻内存,如果声明的静态变量很多,有可能影响系统的性能。
栏目列表
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比