VB1NET数据语法基础.docx
- 文档编号:20652869
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:64
- 大小:85.97KB
VB1NET数据语法基础.docx
《VB1NET数据语法基础.docx》由会员分享,可在线阅读,更多相关《VB1NET数据语法基础.docx(64页珍藏版)》请在冰豆网上搜索。
VB1NET数据语法基础
一、数据类型
<一>Integer整型
类型
内在分配(字节)
数值范围
Short
2
-32768~32767
Int16
2
-32768~32767
UInt16(无符号)
2
0~65535
Integer
4
-2147483648~2147483647
Int32
4
-2147483648~2147483647
UInt32(无符号)
4
0~4294967295
Long
8
-9223372036857755808~922337203687755807
Int64
8
-9223372036857755808~922337203687755807
UInt64(无符号)
8
0~184********7095551615
<二>浮点数
浮点数也称实型数或实数,是带有小数部分的数值。
它由三部分组成:
符号、指数及尾数。
单精度浮点数和双精度浮点数的指数分别用“E”(或“e”)和“D”(或“d”)来表示。
(1)Single单精度浮点型
这个类型用于存储单精度浮点型数字,占用4个字节,负数取值范围在-3.402823E+38~-14.401298E-45;正数取值范围在1.401298E+45~3.40282E38之间。
(2)Double双精度浮点型
一般浮点数字都存储为Double双精度浮点型,可以保证很高的精度,是最常用的浮点型数字类型,占用8个字节,范围在-1.79769313486231E308~-1.79769313486232E308之间。
(3)Decimal十进制
VB6.0支持Currency(贷币)数据类型,Currency变量以整数格式存储64位数字,以10000为标度,将数字表示为定点数,其小数左边为15位,右边为4位。
VB6.0的Currency数据类型的精度不够,无法避免四舍五入的误差,因些在VB.NET引入了Decimal这种数据类型。
VB.NET中将Currency数据类型转换为Decimal、Decimal变量存储带有符号(正负号)的96位整数。
<三>字节/字符/字符串型
(1)Byte字节型
这个类型的数据是从0~255的无符号整数,用来声明二进制的变量,但显示的值为十进制的。
如果要声明的变量包含二进制数据,通常将其声明为Byte型的数。
例如经常用到的颜色三组合红黄蓝即RGB三颜色分量。
(2)Char字符型
这是VB.NET中的单字符数据类型,默认为字符是Unicode字符,占用2个字节。
常常用来声明单字符的变量。
如下:
DimcharfirstAsChar
Charfirst=”A”‘声明一个Char类型的变量charfirst,并且赋给了一个值A,字符用双引号包括
(3)String字符串型
使用下列语句来声明一个字符串变量:
DimstrtextAsString
可以在上述语句的最后面加上*,再加上一个正整数来指定这个字符串变量的长度。
如下:
DimstrtextAsString*20
如果赋予字符串的长度超过了字符串的定长,那么VisualBasic.NET会自动截去超出的长度。
<四>其它数据类型
(1)Boolean布尔型
布尔型数据表示“真(True)”或“假(False)”这样的一种二值状态,简单的就是计算机中的0和1,当没有为该类型变量赋值时,初始值为Flase或0。
VB.NET的布尔值实际上有3个,+/-1都是True,而0为Flase的值。
一般情况应尽量使用True或Flase直接赋值或参与运算而不用+/-1或0代替。
这种变量只占1个字节。
(2)Data日期型
VB.NET中用Date型变量来保存日期信息。
Data在内部存储为64位整数(注意这里的位指整数的位数而不是字节的位数)。
如下:
Dimdbdata1AsData
Dbdata1=NOW()‘初始化dbdata1变量,得到当前日期。
(3)Object对象数据类型
VB.NET用Object数据类型代替了VB6.0的Variant变体数据类型。
Object变量用作指向对象的指针。
Object对象数据类型有几个特殊值。
1、Error值:
指出已发生的过程中的错误状态。
2、DBNull值:
空值,通常用于数据库应用程序,表示未知数据或丢失的数据。
可以用ISBNull函数测试Object对象数据类型变量是否包含DBNull值。
如下:
IfISDBNull(x)andISNull(y)then
2=DBNull
Then
2=0
Endif
3、Nothing值:
有时需要知道是否已将一个值赋予所创建的变量。
在赋值之前,Object对象类型变量具有值Nothing(也是空值,但表示什么都没有)。
值Nothing是不同于0,零长度字符(“”)或DBNull值的特定值。
当式中使用它,将其作为0或零长度字符串来处理,这要根据表达式来定。
只要将任何值包括0,零长度字符串或DBNull()赋予Object对象类型变量,Nothing值就会消失。
而将关键字Nothing赋予Object对象类型变量,就可将object对象类型变量恢复为Nothing。
(4)枚举类型
在程序设计中,有些数据无法直接用整型数或浮点型数来表示,必须经过某种转换,把本来不是简单地用整数来表示的问题硬用几个整数去描述,因而降低了程序的可读性。
为此,VisualBasic.NET提供了枚举数据类型。
当一个变量只有向种可能的值时,可以定义为枚举类型。
所谓“枚举”,是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
声明格式如下:
[Public|Private]Enumname[AsType]
membname1[=initexpr1]
membname2[=initexpr2]
…
membnamen[=initexprn]
EndEnum
参数说明如下:
1、Public:
可选。
表示所定义的Enum类型在整个项目中都是可见的,在默认情况下,Enum类型被定义为Public。
2、Private:
可选。
表示所定义的Enum类型只在声明的模块中是可见的。
3、Enum:
声明该枚举类型的关键字。
4、name:
所定义的Enum类型的名称,必须合乎VB.NET的命名规则,在定义Enum类型的变量或参数时用该名称来指定类型。
5、type:
可选。
用来声明枚举及其所有成员的数据类型,可以是Byte、Integer等。
如果不指定type,则默认为Integer。
6、membname:
枚举成员的名称。
7、initexpr:
可选。
为创建枚举成员时计算和分配给该成员的表达式,该表达式可以包含文本、已定义的常数,另一枚举成员或文本、常数和枚举成员的任何组合,但不能在这个表达式里使用变量或函数,只能适当使用一些强制类型转换函数。
下面给出一些声明枚举变量的实例:
1、在Enum语句的格式中“initexpr”可以省略。
在默认情况下,枚举中的第一个常数被初始化为0,其后的常数则初始化为比其前面的常数大1的数值。
如:
PublicEnumDays
Sumday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
EndEnum
定义了一个枚举类型Days,它包括7个成员,都略了“initexpr”,因此常数Sunday的值为0,常数Monday的值为1,常数Tuesday的值为2,等等。
2、可以用赋值的语句显式地给枚举中的常数赋值,即不省略“initexpr”。
所赋值可以是任何长整数,包括负数。
如果希望用于小于0的常数代表出错条件,则可以给枚举常数赋一个负值。
如:
PublicEnumWorkDsys
Saturday
Sunday=0
Monday
Tuesday
Friday
Invalid=-1
EndEnum
在上面的枚举中,常数Invalid显式地赋值-1,而常数Sunday被赋值0。
因为Saturday是枚举中的第一个元素,所以也被赋值0。
Monday的数值为1(比Sunday的数值大1),Tuesday的数值为2等等。
3、VisualBasic.NET将枚举中的常数数值看作整数。
如果将一个浮点数值赋给一个枚举中的常数,VisualBasic.NET会将该数值取整为最接近的整数。
4、当对一个枚举中的常数赋值时,可以使用另一个枚举中的数值。
PublicEnumWorkDays
Sunday=0
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday=Days.Sturday-6
Invalid=-1
EndEnum
这里的Days枚举的声明与前面的声明等同。
注意:
Enum语句只能在模块、命名空间或文件级出现。
这就是说可以在源文件中或者在模块、类或结构内部声明枚举,但不能在过程内部进行声明。
在定义Enum类型之后,就可以将其用于声明变量类型,过程参数和Function返回值。
二、复合数据类型
迄今为止,我们使用的都是属于基本数据类型或简单数据类型(字符串、整型、实型等)的数据,可以通过简单变量名来访问它们的元素。
除基本数据类型外,VisualBasic.NET还提供了复合数据类型,包含数组、结构和集合。
复合数据类型是按照一定规则组成的元素类型的数据,元素类型又称基类型,它可以是简单数据类型,也可以是复合数据类型。
对于复合数据类型来说,不能用一个简单变量名来访问它的某个元素。
<一>数组
在实际应用中,常常需要处理同一类型的成批数据。
例如,为了处理100个学生某门课程的考试成绩,可以用S1、S2、S3……S100来分别代表每个学生的分数,其中S1代表第一个学生的分数,S2代表第二个学生的分数……。
这里的S1、S2…、S100是带有下标的变量,通常称为下标变量。
显然,用一批具有相同名字、不同下标的变量来表示同一属性的一组数据,能更清楚地表示它们之间的关系。
在VisualBasic.NET中,把一组具有同一名字、不同下标的下标变量称为数组。
如:
Str(8)。
其中S称为数组名,8是下标,上标为0。
一个数组,如果只用一个下标就能确定一个数组元素在数组中的位置,则称为一维数组。
而由两个或多个下标变量所组成的数组称为二维数组或多维数组。
1、静态数组
在VisualBasic.NET里,数组下界总是从0开始,不能改变,并且它们基于数组中的元素的数量被定义。
如:
Dimintmyarray(10)AsInteger
该元素从intmyarray(0)开始,直到intmyarray(10)结果,共11个元素。
2、动态数组
数组到底应该有多大才合适,有时可能不得而知,所以希望能够在运行时具有改变数组维数大小的能力。
VisualBasic.NET中,固定大小数组通过Dim语句声明,在些语句中必须指出数组的维数及大小。
动态数组也是先在Dim语句中声明,但不指定大小,只需要声明其类型,即数组名后的()内为空,最多只有“,”分隔开每个维。
声明定义之后的数组还不能直接赋值。
在使用动态数组之前,再通过ReDim语句重新确定动态数组上界大小,Rem之后才可以赋值或参与运算。
VisualBasic.NET中的ReDim语句仅用于为数组分配或重新分配空间,而不能重新声明数组,一旦在最开始用Dim语句确定了其维数之后,就再也不能改变其维数的数目。
如从二维扩大到三维,或从三维退到一维,唯一能改变的就是数组的大小,即数组上下界。
另外,也不能通过ReDim改变数组类型。
动态数组以变量作为下标值,在程序运行过程中完成定义,通常分为两步:
首先用Dim或Public声明一个没有下标的数组(括号不能省略),然后在过程中用ReDim语句定义带下标的数组。
如:
DimTestVar()AsInteger
DimSInteger
PrivateSubBubbon1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EvenArgs)HandlesButton1.Click)
S=InputBox(“请输入数组大小”,”数组输入”,”10”)
ReDimTesVar(S)
……
EndSub
该例先在窗体层用Dim语句声明了一个空数组TesVar和一个变量S,然后在按钮事件过程中用ReDim语句定义该数组,下标S在运行时输入。
ReDim语句的一般格式为:
ReDim[Preserve]变量(下标)
该语句用来重新定义动态数组,按定义的上界重新分配存储单元。
当重新分配动态数组时,数组中的内容被清除,但如果ReDim语句使用了Preserve选择项,则不清除数组内容。
在ReDim语句中可以定义多个动态数组,但每个数组必须事先用DimVariable()(一维数组)或DimVariable(,)(二维数组)这种形式进行声明,在括号中省略上界,在用ReDim语句重新定义时指定数组下标的上界。
如:
DimStuName(),Address(),City()AsString
ReDimStuName(sn),Address(sn),City(sn)
ReDim只能出现在事件过程或通用过程中,用它定义的数组是一个“临时”数组,即在执行数组所在的过程时为数组开辟一定的内存空间,当过程结束时,这部分内存即被释放。
对动态数组的具体说明如下:
(1)动态数组分两次定义,第一次用Dim、Public、Private等语句定义,只有类型,不指定维数;第二在ReDim语句定义,给出具体的维数和上界。
对于一维数组来说,第一次定义时,数组名的后面带有一对圆括号,例如temp();而对于二维数组来说,第一次定义时,数组名后面的圆括号中有一个逗号,例如temp(,),依此类推。
(2)可以多次用ReDim语句定义同一个数组,随时修改数组中元素的个数,例如:
PrivateSubButton1_Click(ByvalsenderAsSystem.Object,ByValeAsSystem.EvenArgs)HandlesButton1.Click
Dimtemp()AsString
RemTemp(4)
Temp
(2)=”Microsoft”
Msgbox(temp
(2))
ReDimtemp(6)
Temp(5)=”VisualBasic.NET”
Msgbox(temp(5))
EndSub
在事件过程中,开始时用ReDim定义的数组Temp有5个元素,然后再一次用ReDim把temp数组定义为7个元素。
但是注意,只能改变元素的个数,不能改变数组的维数。
(3)在用ReDim重新定义动态数组时,可以使用可选的Preserver关键字。
如果不使用该关键字,则原来数组中的数据将被清除,而如果使用了该关键字,则原来数组中的数据将被传送到新建立的数组中。
3、数组的清除和重定义
数组一经定义,便在内在中分配了相应的存储空间,其大小是不能改变的。
也就是说,在一个程序,同一个数组只能定义一次。
有时候,可能需要清除数组的内容或对数组重新定义,这时可以用Erase语句实现。
格式为:
Erase数组名[,数组名]…
Erase语句用来重新初始化静态数组的元素,或者释放动态数组的存储空间,它只能出现在过程中。
注意,在Erase语句中,只给出要刷新的数组名,不带括号和下标。
例如:
EraseTest
对数组清除和重定义的具体说明如下。
(1)当把Erase语句用于静态数组时,如果这个数组是数值数组,则把数组中的所有元素置为0;如果是字符串数组,则把所有元素置为空字符串;如果是结构数组,则根据每个元素(包括定长字符串)的类型重新进行设置。
如下表:
Erase语句对静态数组的影响
数组类型
Erase对数组元素的影响
数值数组
将每个元素设为0
字符串数组(变长)
将每个元素设为零长度字符串(“”)
Object数组
将每个元素设为Empty
结构数组
将每个元素作为单独的变量来设置
对象数组
将每个元素设为Nothing
(2)当把Erase语句用于动态数组时,将删除整个数组结构并释放数组所占用的内存。
也就是说,动态数组经Erase后即不复存在;而静态数组经Erase后仍然存在,只是其内容被清空。
(3)Erase释放动态数组所使用的内存。
在下次引用该动态数组之前,必须用ReDim语句重新定义该数组。
例:
编写程序,试验Erase语句的功能。
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimTest(10),iAsInteger
Debug.WriteLine(“”)
Fori=0to10
Test(i)=i
Debug.Write(Str(Test(i))&“”)
Nexti
EraseTest
Debug.WriteLine(“”)
Debug.WriteLine(“EraseTest()”)
ReDimTest(12)
Fori=0to12
Debug.Write(Str(Text(i))&“”)
Nexti
Debug.WriteLine(“”)
Debug.WriteLine(“”)
EndSub
在上面的事件过程,定义了一个数组Text,用For循环语句为每个元素赋值,并输出每个元素的值,然后执行Erase语句,将各元素的值清除,再用ReDim语句重新定义数组Text,使得每个元素的值为0。
ReDim是不能直接定义数组的,但从这个例子可以看出,在用Erase清除一个数组后,可以用ReDim语句重新定义该数组。
4、默认数组与嵌套数组
在VisualBasic.NET中,允许定义默认数组,并可用一个数组作为另一个数组的元素,即数组嵌套。
(1)默认数组
默认数组就是默认数据类型的数组。
在一般情况下,定义数组应指明其类型,如:
StaticElec(100)AsInteger
定义了一个数组Elec,该数组的类型为整型,它有101个元素,每个元素都是一个Integer数。
如果把上面的定义改为:
StaticElec(100)
则定义的数组是默认数组,其类型默认为Object,因此,该定义等价于:
StaticElec(1to100)AsObject
从表面上看,定义默认数组似乎没有什么意义,实际上不然。
几乎在所有的程序设计中,一个数组各个元素的数据类型都要求相同,即一个数组只能存放同一种类型的数据。
而对于默认数组来说,同一个数组中可以存放各种不同的数据。
因此,默认数组可以说是一种“混合数组”。
请看下例:
编写程序,试验默认数组的功能。
PrivateSubForm1_Click(ByValsenderAsObject,ByValAsSystem.EvenArgs)HandlesMyBase.Click
StaticDefau(5)
DimiAsShort
Debug.WriteLine(“”)
Defau(0)=”清华大学”
Defau
(1)=100
Defau
(2)=234.56
Defau(3)=”BeiJing”
Defau(4)=Now
Defau(5)=&HAAF
Fori=0to5
Debug.WriteLine(“Defau(“&i&“)=“&Defau(i))
Nexti
EndSub
该事件过程定义了一个表态数组Defau(默认数组一般应定义为静态的),然后对各元素赋予不同类型的数据,包括整形、实型、日期和时间类型及十六进制整型。
(1)嵌套数组
在一般情况下,数组元素是一个具体的数据。
而在VisualBasic.NET中,可以用数组作为另一个数组的元素,这样的数组称为嵌套数组。
注意,嵌套数组必须是默认数组(即Object类型),而被嵌套的数组必须是标准数据类型数组。
在实际应用中,通常把整个被嵌套数组赋给嵌套数组中的某个元素,在赋值语句中写上被嵌套数组的名字,后面加上一对空括号。
例如:
Dima(4)AsInteger
Dimb
(2)
Fori=1to4
a(i)=i*i
Nexti
b
(1)=a()
该例首先定义了两个数组,其中a为整型数组,b为默认数据类型(即Object)数组,在循环语句中为数组a各元素赋值,然后执行“b
(1)=a()”,即可把数组a作为数组b的第一个元素。
在这种情况下,数组a中的各元素可以这样表示:
b
(1)
(1)
b
(1)
(2)
b
(1)(3)
b
(1)(4)
5、数组的初始化
定义数组的目的在于使用数组。
而为了使用数组,就要给数组的各个元素赋初值,然后引用指定的元素。
在使用数组时,通常要求数组有初值。
当然可以用赋值语句或输入语句使数组中的元素得到值,但这样做会占用运行时间。
为些,VisualBasic.NET允许在定义数组时对各元素指定初始值,称为数组的初始化。
在VisualBasic6.0以前的版本中,数组元素的初始值用Array函数实现,而在VisualBasic.NET中,给数组赋初始值的方法与C语言类似。
(1)一维数组的初始化:
Dim数组名()As类型={值1,值2,值3,……,值n}
VisualBasic.NET不允许对显式指定上界的数组进行初始化,因此“数组名”后面的括号中必须为空,根据具体初值的个数确定数组的上界,需要赋给各元素的初值放在等号后面的花括号中,数据之间用逗号隔开。
如:
Dima()AsShort={2,4,6,8,10}
定义了一个Short型数组a,该数组有5个初值,因此数组的上界为4,即a(4)。
经过上述定义和初始化后,把花括号中的值依次赋给各数组元素,使得a(0)=2,a
(1)=4,a
(2)=6,a(3)=8,a(4)=10。
类似地,对字符串数组也可以初始化。
如:
Dimc()AsString={“Liu”,”De”,”Rong”}
定义了一个字符串数组c,该数组有3个初值,因此数组的上界为2,即c(3)。
经过上述定义和初始化后,把花括号中的值依次赋给数组元素,使得c(0)=”Liu”,c
(1)=”De”,c
(2)=”Rong”
(2)二维数组的初始化:
Dim数组名(,)As类型={{第一行值},{第二行值},……,{第n行值}}
如:
Dimarr(,)AsShort={{1,2,3,4},{5,6,7,8},{9,10,11,12}}
定义了一个二维数组,它有3行4列,即arr(2,3)。
(3)多维数组的初始化:
与二维数组的相同。
6、ForEach……Next语句
ForEach……Next语句类似于For
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB1NET 数据 语法 基础
![提示](https://static.bdocx.com/images/bang_tan.gif)