初学vb,不知道如何实现一个可自由扩展的多维数组??
vb中只能对多维数组最后一维进行redim。这样做起来就很不爽
是不是可以用数组里嵌套数组来实现??这样效率会不会成问题?
各位大虾有没有好的算法可以提供?
还有我如何才能得到一个数组的长度,没找到可以直接用的函数。
vb中如果有象java中的ArrayList那样是东东就好了。

解决方案 »

  1.   

    redim Preserve a(10)
    Preserve关键字,不破坏原数组而在后面添加
      

  2.   

    建议见贴:
    http://community.csdn.net/Expert/topic/3310/3310994.xml?temp=.2172052
      

  3.   

    获取数组的长度,请见MSDN上关于lbound和ubound函数解释!!!LBound 函数      返回一个 Long 型数据,其值为指定数组维可用的最小下标。语法LBound(arrayname[, dimension])LBound 函数的语法包含下面部分:部分 描述 
    arrayname 必需的。数组变量的名称,遵循标准的变量命名约定。 
    dimension 可选的;Variant (Long)。指定返回哪一维的下界。1 表示第一维,2 表示第二维,如此类推。如果省略 dimension,就认为是 1。 
    说明LBound 函数与 UBound 函数一起使用,用来确定一个数组的大小。UBound 用来确定数组某一维的上界。对具有下述维数的数组而言,LBound 的返回值见下表:Dim A(1 To 100, 0 To 3, -3 To 4)语句      返回值 
    LBound(A, 1) 1 
    LBound(A, 2) 0 
    LBound(A, 3) -3 
    所有维的缺省下界都是 0 或 1,这取决于 Option Base 语句的设置。使用 Array 函数创建的数组的下界为 0;它不受 Option Base 的影响。对于那些在 Dim 中用 To 子句来设定维数的数组而言,Private、Public、ReDim 或 Static 语句可以用任何整数作为下界。
      

  4.   

    UBound 函数      返回一个 Long 型数据,其值为指定的数组维可用的最大下标。语法UBound(arrayname[, dimension])UBound 函数的语法包含下面部分:部分 描述 
    arrayname 必需的。数组变量的名称,遵循标准变量命名约定。 
    dimension 可选的;Variant (Long)。指定返回哪一维的上界。1 表示第一维,2 表示第二维,如此等等。如果省略 dimension,就认为是 1。 
    说明UBound 函数与 LBound 函数一起使用,用来确定一个数组的大小。LBound 用来确定数组某一维的上界。对具有下述维数的数组而言,UBound 的返回值见下表:Dim A(1 To 100, 0 To 3, -3 To 4)语句            返回值 
    UBound(A, 1)     100 
    UBound(A, 2)      3 
    UBound(A, 3)      4