VBS ArrayList Class vbs中的数组类

时间:2022-06-01 22:11:07
  1. Class ArrayList 
  2.  Private items() 
  3.  Private size 
  4.  
  5.   Private Sub Class_Initialize 
  6.  size = 0 
  7.  ReDim items(1) 
  8.   End Sub 
  9.  
  10.   Private Sub Class_Terminate 
  11.  items = null 
  12.   End Sub 
  13.  
  14.  Public Function Add(ByVal value) 
  15.        If (size = Ubound(items)) Then EnsureCapacity((size + 1)) 
  16.  
  17.        items(size) = value 
  18.        size = size + 1 
  19.        Add = size 
  20.  End Function 
  21.  
  22.  Public Property Get Item(index) 
  23.   Item = items(index) 
  24.  End Property 
  25.  
  26.  Public Property Let Item(index, vObject) 
  27.   items(index) = vObject 
  28.  End Property 
  29.  
  30.  Property Get Count 
  31.   Count = size 
  32.  End Property 
  33.  
  34.  
  35.  Public Property Get Capacity() 
  36.   Capacity = Ubound(items) 
  37.  End Property 
  38.  
  39.  Public Property Let Capacity(value) 
  40.             If (value <> Ubound(items)) Then 
  41.                   If (value < size) Then Err.Rise 6 
  42.  
  43.                   If (value > 0) Then 
  44.                         ReDim Preserve items(value) 
  45.                   Else 
  46.                         ReDim Preserve items(3) 
  47.                   End If 
  48.             End If 
  49.  End Property 
  50.  
  51.  Private Sub EnsureCapacity(ByVal min) 
  52.        If (Ubound(items) < min) Then 
  53.       Dim num1 : num1 = IIf((Ubound(items) = 0), 4, (Ubound(items) * 2)) 
  54.       If (num1 < min) Then num1 = min 
  55.       Capacity = num1 
  56.        End If 
  57.  End Sub 
  58.  
  59.  
  60.  Private Function IIf(j, r1, r2) 
  61.   IF (j) Then 
  62.    IIf = r1 
  63.   Else 
  64.    IIf = r2 
  65.   End IF 
  66.  End Function 
  67.  
  68. End Class 


示例:

 

  1. Dim al : Set al = new ArrayList 
  2. al.Add(1) 
  3. al.Add(2) 
  4. al.Add(3) 
  5. al.Add(4) 
  6. al.Add(5) 
  7. al.Add(6) 
  8. al.Add(7) 
  9. al.Add(8) 
  10. al.Add(9) 
  11. al.Add(10) 
  12.  
  13. For i = 0 To al.Count -1 
  14.  w("Index"& i &": "& al.Item(i)) 
  15. Next 
  16.  
  17. w("Count: "& al.Count) 
  18. w("Capacity: "& al.Capacity) 
  19.  
  20. Sub w(o) 
  21. Response.Write(o &"<br />"
  22. End Sub