你的位置:创意公社- ideaer >> >> 程序开发 >> 详细内容 在线投稿

VB编程基础教程10–动态数组

排行榜 打印 发给朋友 举报 发布者:mj1880
热度347票  浏览112次 【共0条评论】【我要评论 时间:2010年6月03日 00:46

!s.ni'YcZV1数组到底应该有多大才合适,有时可能不得而知。所以希望能够在运行时具有改变数组大小的能力。创意公社- ideaer;CITt_ T4^V'?!t,F
动态数组就可以在任何时候改变大小。在 visual basic 中,动态数组最灵活、最方便,有助于有效管理内存。例如,可短时间使用一个大数组,然后,在不使用这个数组时,将内存空间释放给系统。创意公社- ideaer-Q!u4R7M-_B/L }5n
如果不用动态数组,就要声明一个数组,它的大小尽可能达到最大,然后再抹去那些不必要的元素。但是,如果过度使用这种方法,会导致内存的操作环境变慢。创意公社- ideaer j@m6] Y!d{v
要创建动态数组,请按照以下步骤执行: 创意公社- ideaerg l&}$l9r"[.y+TG
(如果希望数组为公用数组,则)用 public 语句声明数组,或者,(如果希望数组为模块级,则)在模块级用 dim 语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 static 或 dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。 创意公社- ideaerU TY0kFQ5x%H
dim dynarray ()
?i a Id%K]FgGv1用 redim 语句分配实际的元素个数。
f \ @"i9x/j6A'{7E1redim dynarray (x + 1)
Pcc-@Um;g&i*f+a1redim 语句只能出现在过程中。与 dim 语句、static 语句不同,redim 语句是一个可执行语句,由于这一语句,应用程序在运行时执行一个操作。
.e"S8|eM u;[ vU1redim 语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个 redim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。
M3Cr3Ny ~(l.m1redim dynarray (4 to 12)
n,k^6GE+}A1例如,用第一次声明在模块级所建立的动态数组 matrix1:
!^nmt1K {x0~1dim matrix1 () as integer
C/Fna:yy1然后,在过程中给数组分配空间:创意公社- ideaer|:AC2zj/jL
sub calcvaluesnow ()创意公社- ideaer"{x bP)sRS
   .
"g I#V~h A"Aq!q1   .
%jq E0Uv4mt"h0[1   .创意公社- ideaer^2b^:jl6~)\
   redim matrix1 (19, 29)创意公社- ideaer7|ee6y'\;N:S
end sub创意公社- ideaerGB Z5RMl
这里的 redim 语句给 matrix 分配一个 20 × 30 的整数矩阵(元素总大小为 600)。还有一个办法,用变量设置动态数组的边界:
&@;DNPfE&l%A!{}1redim matrix1 (x, y)
"S?d)HpF} X1注意 您可以将字符串赋值给大小可变的字节数组。一个字节数组也可以被赋值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在 unicode 平台上的字节数是它在非 unicode 平台上的两倍。
wp3GG"x5C}1保留动态数组的内容
-`5dT&G x#z7O4k1每次执行 redim 语句时,当前存储在数组中的值都会全部丢失。visual basi 重新将数组元素的值置为 empty(对 variant 数组)、置为 0(对 numeric 数组)、置为 零长度字符串(对 string 数组)或者置为 nothing(对于对象的数组)。
;`&l,I;^t*uq.OpR ka/T1在为新数据准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 preserve 关键字的 redim 语句就可做到这点。例如,使用 ubound 函数引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失:
~j [2Q+|!x(Y3p1redim preserve dynarray (ubound (dynarray) + 1)创意公社- ideaer.f5y5|3~`3FJ%^
在用 preserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程:创意公社- ideaer5Qv7^ko"Q-H
redim preserve matrix (10, ubound (matrix, 2) + 1)创意公社- ideaerMo\BVT@/]
而不可这样编程:创意公社- ideaer%J'V!a ZsW p
redim preserve matrix (ubound (matrix, 1) + 1, 10)创意公社- ideaer$V A/B5|+@z} N"D N
详细信息 关于动态数组的更详细信息,请参阅语言参考中的“redim 函数”。关于对象数组,请参阅“用对象编程”。创意公社- ideaer3Q$Fc*Q,i,`j2@

顶:15 踩:35
对本文中的事件或人物打分:
当前平均分:-1.39 (131次打分)
对本篇资讯内容的质量打分:
当前平均分:0.25 (63次打分)
【已经有103人表态】
38票
感动
5票
路过
11票
高兴
11票
难过
7票
搞笑
8票
愤怒
12票
无聊
11票
同情
上一篇 下一篇
发表评论
换一张

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】