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