dim ASP Array

dim ASP Array

问题描述:

我想定义一个数组。dim ASP Array

我的问题是暗淡X(999)昏暗X(9999)将成本相同或昏暗X(9999),将浪费更多的资源?

非常感谢!

当然,创建一个包含9999个元素的数组将比使用999的数组使用更多的内存。我怀疑这不是你的问题。也许你正在试图找出一种方法来为动态数据量分配足够的内存?您可以使用ReDim语句调整经典ASP(VBScript)中的数组大小 - 一旦知道了真实大小,就可以做到这一点。

数组分配在连续的内存中。因此,一个10000个元素的数组将占用一个需要1000个元素的内存的10倍。

您可以从小处开始,根据需要增加阵列数量。过去我使用过这种类来创建可变长度列表类型。

Class List 
    Dim maItems 
    Dim mlCount 

    Public Sub Class_Initialize() 
     ReDim maItems(8) 
     mlCount = 0 
    End Sub 

    Public Function Add(Item) 
     If mlCount = UBound(maItems) ReDim Preserve maItems(mlCount * 2) 
     mlCount = mlCount + 1 
     maItems(mlCount) = Item 
     Add = mlCount 
    End Function 

    Public Property Get Item(Index) 
     If Index < 1 Or Index > mlCount Then Error.Raise 9, "List", "Subscript out of Range" 
     Item = maItems(Index) 
    End Property 

    Public Property Get Count() 
     Count = mlCount 
    End Property 
End Class  
+1

我认为上述代码应改为: 昏暗maItems 昏暗mlCount 公用Sub Class_Initialize() 使用ReDim maItems(8) mlCount = 0 结束子 – PropellerHead 2009-09-23 12:05:11

+1

@PropellerHead:好斑点。我现在大部分时间都花在C#上。 ;) – AnthonyWJones 2009-09-23 14:13:41

这是一个大数组吗?

为什么不分配它是动态的,然后扩大它的增长?上面的代码的

<% 
Dim myDynArray() 

ReDim myDynArray(1) 
myDynArray(0) = "Albert Einstein" 
myDynArray(1) = "Mother Teresa" 

ReDim Preserve myDynArray(3) 
myDynArray(2) = "Bill Gates" 
myDynArray(3) = "Martin Luther King Jr." 

For Each item In myDynArray 
    Response.Write(item & "<br />") 
Next 
%> 

输出是

Albert Einstein Mother Teresa Bill Gates Martin Luther King Jr. 

我一点地加入安东尼W¯¯琼斯的代码,所以它返回与只有相关元件的正确大小的阵列(ToArray的())。

Class List  
    Dim maItems  
    Dim mlCount 

    Public Sub Class_Initialize()  
     ReDim maItems(8) 
     mlCount = 0  
    End Sub  

    Public Function Add(Item)    
     If mlCount = UBound(maItems) Then ReDim Preserve maItems(mlCount * 2)  
     maItems(mlCount) = Item 
     mlCount = mlCount + 1 
     Add = mlCount 
    End Function 

    Public Property Get ToArray() 

     ReDim Result(Params.Count-1) 

     Dim i 
     For i = 0 to Params.Count-1 
      Result(i) = Params.maItems(i) 
     Next 

     ToArray = Result   
    End Property 

    Public Property Get Item(Index)  
     If Index < 1 Or Index > mlCount Then Error.Raise 9, "List", "Subscript out of Range"  
     Item = maItems(Index) 
    End Property 

    Public Property Get Count()  
     Count = mlCount 
    End Property 
End Class