阿杰 发表于 2009-8-22 22:26:07

【分享】动态数组精解示例

<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C9%E8%D6%C3">设置</span><span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B6%AF%CC%AC">动态</span>数组 及 ReDim <span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D3%EF%BE%E4">语句</span>示例<br/>刚刚有朋友问起“如何设置动态数组”,用ReDim就可以了:<br/>Dim num<br/>num=8<br/>Dim arr()<br/>ReDim arr(num,1) <br/>num=88<br/>ReDim arr(num,1) <br/>ReDim 语句示例 <br/>该示例使用 ReDim 语句为动态数组<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B1%E4%C1%BF">变量</span>分配和重分配存储空间。假设 Option Base 是 1。 <br/>Dim MyArray() As Integer '声明动态数组。 <br/>Redim MyArray(5) '分配 5 个元素。 <br/>For I = 1 To 5 '循环 5 次。 <br/>MyArray(I) = I '初始化数组。 <br/>Next I <br/>下一条语句重<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B6%A8%D2%E5">定义</span>该数组的大小,并清除其中的元素。 <br/>Redim MyArray(10) '大小重定为 10 个元素。 <br/>For I = 1 To 10 '循环 10 次。 <br/>MyArray(I) = I '初始化数组。 <br/>Next I <br/>下面的语句重定义该数组的大小,但没有清除其中的元素。 <br/>Redim Preserve MyArray(15) '大小重定为 15 个元素。 <br/>(更详细的信息请见下面 <br/>动态数组 <br/>数组到底应该有多大才合适,有时可能不得而知。所以希望能够在<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D4%CB%D0%D0">运行</span>时具有改变数组大小的能力。 <br/>动态数组就可以在任何时候改变大小。在 Visual Basic 中,动态数组最灵活、最方便,有助于有效管理<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C4%DA%B4%E6">内存</span>。例如,可短<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CA%B1%BC%E4">时间</span>使用一个大数组,然后,在不使用这个数组时,将内存空间释放给<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CF%B5%CD%B3">系统</span>。 <br/>如果不用动态数组,就要声明一个数组,它的大小尽可能达到最大,然后再抹去那些不必要的元素。但是,如果过度使用这种方法,会导致内存的操作环境变慢。 <br/>要创建动态数组,请按照以下步骤执行: <br/>(如果希望数组为公用数组,则)用 Public 语句声明数组,或者,(如果希望数组为<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C4%A3%BF%E9">模块</span>级,则)在模块级用 Dim 语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 Static 或 Dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。 <br/>Dim DynArray () <br/>用 ReDim 语句分配实际的元素个数。 <br/>ReDim DynArray (X + 1) <br/>ReDim 语句只能出现在过程中。与 Dim 语句、Static 语句不同,ReDim 语句是一个可执行语句,由于这一语句,应用<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B3%CC%D0%F2">程序</span>在运行时执行一个操作。 <br/>ReDim 语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个 ReDim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。 <br/>ReDim DynArray (4 to 12) <br/>例如,用第一次声明在模块级所建立的动态数组 Matrix1: <br/>Dim Matrix1 () As Integer <br/>然后,在过程中给数组分配空间: <br/>Sub CalcValuesNow () <br/>. <br/>. <br/>. <br/>ReDim Matrix1 (19, 29) <br/>End Sub <br/>这里的 ReDim 语句给 Matrix 分配一个 20 × 30 的整数矩阵(元素总大小为 600)。还有一个办法,用变量设置动态数组的边界: <br/>ReDim Matrix1 (X, Y) <br/>注意 您可以将<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D7%D6%B7%FB">字符</span>串赋值给大小可变的字节数组。一个字节数组也可以被赋值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在 Unicode 平台上的字节数是它在非 Unicode 平台上的两倍。 <br/>保留动态数组的内容 <br/>每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。Visual Basi 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对 Numeric 数组)、置为 零长度字符串(对 String 数组)或者置为 Nothing(对于<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B6%D4%CF%F3">对象</span>的数组)。 <br/>在为新<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CA%FD%BE%DD">数据</span>准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 Preserve 关键字的 ReDim 语句就可做到这点。例如,使用 UBound <span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%BA%AF%CA%FD">函数</span>引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失: <br/>ReDim Preserve DynArray (UBound (DynArray) + 1) <br/>在用 Preserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程: <br/>ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1) <br/>而不可这样编程: <br/>ReDim Preserve Matrix (UBound (Matrix, 1) + 1, 10)

upring 发表于 2015-7-20 14:26:52

又回到了VB 呵呵支持一下吧
页: [1]
查看完整版本: 【分享】动态数组精解示例