dim MyArray() As Integer        '在过程外声明动态数组
Redim MyArray(5)                '在过程中定义数组为5个元素
Redim Preserve MyArray(15)      '在过程中定义数组为15个元素,保留数据中原数据下面两句是什么意思啊?已经定义了5个元素了怎么还有定义15个元素……另外,不是很了解论坛运转哦……比如我一共能给的回答问题的分有多少,有没有这方面的新手帖呢?

解决方案 »

  1.   

    动态数组,可以随时改变大小的
    但是其实数组的地址都变了,只要动态添加一次数组地址就会变化一次,而且如果使用了Preserve还需要拷贝一次数据
      

  2.   

    dim MyArray() As Integer        '在过程外声明动态数组 
    Redim MyArray(5)                '在过程中定义数组为6个元素 
    Redim Preserve MyArray(15)      '在过程中定义数组为16个元素,保留数据中原数据1) redim 动态数组,序号默认是从0开始的
    2) ReDim 语句在过程级别中使用,用于为动态数组变量重新分配存储空间。语法ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .ReDim 语句的语法包括以下几个部分:部分 描述 
    Preserve 可选的。关键字,当改变原有数组最末维的大小时,使用此关键字可以保持数组中原来的数据。
    具体看MSDN 3)你发帖多少分,就可以给多少分.
      

  3.   

    你后面的注释已经说得很明白了数组到底应该有多大才合适,有时可能不得而知。所以希望能够在运行时具有改变数组大小的能力。
    动态数组就可以在任何时候改变大小。在 visual basic 中,动态数组最灵活、最方便,有助于有效管理内存。例如,可短时间使用一个大数组,然后,在不使用这个数组时,将内存空间释放给系统。
    如果不用动态数组,就要声明一个数组,它的大小尽可能达到最大,然后再抹去那些不必要的元素。但是,如果过度使用这种方法,会导致内存的操作环境变慢。
    要创建动态数组,请按照以下步骤执行: 
    (如果希望数组为公用数组,则)用 public 语句声明数组,或者,(如果希望数组为模块级,则)在模块级用 dim 语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 static 或 dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。 
    dim dynarray ()
    用 redim 语句分配实际的元素个数。 
    redim dynarray (x + 1)
    redim 语句只能出现在过程中。与 dim 语句、static 语句不同,redim 语句是一个可执行语句,由于这一语句,应用程序在运行时执行一个操作。
    redim 语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个 redim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。
    redim dynarray (4 to 12)
    例如,用第一次声明在模块级所建立的动态数组 matrix1:
    dim matrix1 () as integer
    然后,在过程中给数组分配空间:
    sub calcvaluesnow ()
       .
       .
       .
       redim matrix1 (19, 29)
    end sub
    这里的 redim 语句给 matrix 分配一个 20 × 30 的整数矩阵(元素总大小为 600)。还有一个办法,用变量设置动态数组的边界:
    redim matrix1 (x, y)
    注意 您可以将字符串赋值给大小可变的字节数组。一个字节数组也可以被赋值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在 unicode 平台上的字节数是它在非 unicode 平台上的两倍。
    保留动态数组的内容
    每次执行 redim 语句时,当前存储在数组中的值都会全部丢失。visual basi 重新将数组元素的值置为 empty(对 variant 数组)、置为 0(对 numeric 数组)、置为 零长度字符串(对 string 数组)或者置为 nothing(对于对象的数组)。
    在为新数据准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 preserve 关键字的 redim 语句就可做到这点。例如,使用 ubound 函数引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失:
    redim preserve dynarray (ubound (dynarray) + 1)
    在用 preserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程:
    redim preserve matrix (10, ubound (matrix, 2) + 1)
    而不可这样编程:
    redim preserve matrix (ubound (matrix, 1) + 1, 10)
      

  4.   

    dim MyArray() As Integer        '在过程外声明动态数组
    Redim MyArray(5)                '在过程中定义数组为6个元素
    Redim Preserve MyArray(15)      '在过程中定义数组为16个元素,保留数据中原数据vb中数组默认是从0开始的
    第三条语句是在第二天语句的基础上把数组上限扩展到15,并且保留数组中的数据
    至于为什么用到就要看整体需要了