动态数组
在有些情况下,用户可能不知道需要多大的数组,这时就需要用一个能够改变大小的数组,这就是动态数组。动态数组可以在任何时侯改变大小。在@H_502_11@VB中,动态数组是最灵活、最方便的一种数组。利用动态数组还有助于有效管理内存,因为动态数组是使用时才开辟内存空间,在不使用这个数组时,还可以将内存空间释放给系统。这样就可以最大限度地节省内存,提高运行速度。
创建动态数组需要@H_502_11@2步,第一步和固定长度数组(静态数组)类似,用@H_502_11@Dim语句@H_502_11@(或@H_502_11@Private、@H_502_11@Public、@H_502_11@Static)声明,但是不要指定维数。如:
@H_502_11@ Dim MyArry () As Integer
第二步在以后的实际程序中,当要用到该数组时,再用@H_502_11@ReDim语句分配实际的元素个数,这时需要确定元素的个数。如前面声明的数组@H_502_11@MyArry,可以用下面语句将它定义为一个二维数组@H_502_11@:
@H_502_11@ ReDim MyArry(10,10)
@H_502_11@ReDim语句只能出现在过程中。与@H_502_11@Dim语句、@H_502_11@Static语句这些变量声明语句不同,@H_502_11@ReDim语句是@H_502_11@—个可执行语句,@H_502_11@ReDim语句可以改变元素数目以及上下界,但在第一个ReDim语句定义了数组维数之后,就不能够再改变数组维数(最多能定义的维数是60),只能改变数组边界。如:
@H_502_11@ Dim MyArry () As Single'声明动态数组@H_502_11@
ReDim MyArry(30,20,10) '重新定义数组@H_502_11@
ReDim MyArry(50,23,21) '再次重新定义数组(这时不能再改变维数)
每次执行@H_502_11@ReDim语句时,@H_502_11@Visual Basic会把动态数组中的数值重新初始化一遍,当前存储在数组中的值都会全部丢失。但是用户有时希望只改变数组大小,但不丢失数组中的数据。这时,可以使用带@H_502_11@Preserve关键字的@H_502_11@ReDim语句。其格式为:
@H_502_11@ ReDim Preserve数组名(@H_502_11@[下标下界@H_502_11@ To]下标上界)@H_502_11@ [As 数据类型@H_502_11@]
例如:
@H_502_11@ ReDim MyArry(@H_502_11@50,@H_502_11@23,@H_502_11@21)
@H_502_11@ ReDim Preserve MyArry(@H_502_11@50,@H_502_11@23,@H_502_11@50)
注意:用Preserve只能在改变数组的最后一维大小时,保留数组的数据。对一维数组来说,所有数据都会保留,而对于多维数组,只能改变最后一维的大小,才能保留全部数组数据,否则出错。