# 環境要求 - `Windows XP` 及以上。 - `Windows 10` 、 `Windows 11` 在 `Windows 功能` 中勾選 `.NET Framework 3.5 (包括 .NET 2.0 和 3.0)` 。 # 前置知識 ```VBScript WSH.Echo Emp ...
環境要求
Windows XP
及以上。Windows 10
、Windows 11
在Windows 功能
中勾選.NET Framework 3.5 (包括 .NET 2.0 和 3.0)
。
前置知識
WSH.Echo Empty = Empty
-1
WSH.Echo Null = Null
null
WSH.Echo New RegExp Is New RegExp
0
Set oRE = New RegExp
WSH.Echo oRE Is oRE
-1
WSH.Echo CreateObject("Scripting.FileSystemObject") Is CreateObject("Scripting.FileSystemObject")
0
Set oFS = CreateObject("Scripting.FileSystemObject")
WSH.Echo oFS Is oFS
-1
下麵兩個返回值出現的原因是浮點誤差:
WSH.Echo 0.1 + 0.2 = 0.3
0
WSH.Echo 100000000000000000000000 = 100000000000000000000001
-1
使用
創建一個 SortedList
對象:
Set oSL = CreateObject("System.Collections.SortedList")
Capacity 屬性:表示有序列表目前的容量
Set oSL = CreateObject("System.Collections.SortedList")
WSH.Echo oSL.Capacity
0
oSL.Add 1, 1
WSH.Echo oSL.Capacity
16
oSL.Capacity = 1
WSH.Echo oSL.Capacity
1
Count 屬性:返回有序列表包含元素的個數
Set oSL = CreateObject("System.Collections.SortedList")
WSH.Echo oSL.Count()
0
oSL.Add 1, 1
WSH.Echo oSL.Count()
1
IsFixedSize 屬性:是否具有固定大小
會返回 False
。
Set oSL = CreateObject("System.Collections.SortedList")
WSH.Echo oSL.IsFixedSize()
0
IsReadOnly 屬性:是否為只讀
會返回 False
。
Set oSL = CreateObject("System.Collections.SortedList")
WSH.Echo oSL.IsReadOnly()
0
IsSynchronized 屬性:訪問是否同步(是否線程安全)
由於 VBScript
是單線程的,該屬性無意義。
會返回 False
。
Set oSL = CreateObject("System.Collections.SortedList")
WSH.Echo oSL.IsSynchronized()
0
Item 屬性:表示有序列表中指定鍵對應的值
參數:鍵(整數)。
Set oSL = CreateObject("System.Collections.SortedList")
WSH.Echo TypeName(oSL.Item(0))
Empty
WSH.Echo oSL.Contains(0)
0
oSL.Item(0) = 2333
WSH.Echo oSL.Contains(0), oSL.Item(0)
-1 2333
Set oRE = New RegExp
Set oSL.Item(0) = oRE
Set oSL.Item(1) = oRE
Set oSL.Item(-1) = oRE
WSH.Echo oSL.Item(0) Is oRE, oSL.Item(1) Is oRE, oSL.Item(-1) Is oRE
-1 -1 -1
Default 預設屬性:表示有序列表中指定鍵對應的值
同 Item
屬性。
Set oSL = CreateObject("System.Collections.SortedList")
WSH.Echo TypeName(oSL(0))
Empty
WSH.Echo oSL.Contains(0)
0
oSL(0) = 2333
WSH.Echo oSL.Contains(0), oSL(0)
-1 2333
Set oRE = New RegExp
Set oSL(0) = oRE
Set oSL(1) = oRE
Set oSL(-1) = oRE
WSH.Echo oSL(0) Is oRE, oSL(1) Is oRE, oSL(-1) Is oRE
-1 -1 -1
Add 方法:添加新的鍵值對
參數:鍵(整數)、值。
若鍵已經存在,則會拋出異常。
Set oSL = CreateObject("System.Collections.SortedList")
For i = 0 To 9
oSL.Add i, CStr(i)
Next
WSH.Echo oSL.Count()
10
Clear 方法:清空有序列表
Set oSL = CreateObject("System.Collections.SortedList")
oSL.Add 0, 0
WSH.Echo oSL.Count()
1
oSL.Clear
WSH.Echo oSL.Count()
0
Clone 方法:創建有序列表的副本
Set oSL = CreateObject("System.Collections.SortedList")
Set oSL2 = oSL
Set oSL3 = oSL.Clone()
oSL.Add 0, 0
WSH.Echo oSL.Count(), oSL2.Count(), oSL3.Count()
1 1 0
Contains 方法:判斷有序列表是否包含指定鍵
Set oSL = CreateObject("System.Collections.SortedList")
WSH.Echo oSL.Contains(0)
0
oSL.Add 0, 1
WSH.Echo oSL.Contains(0)
-1
ContainsKey 方法:判斷有序列表是否包含指定鍵
同 Contains
方法。
Set oSL = CreateObject("System.Collections.SortedList")
WSH.Echo oSL.ContainsKey(0)
0
oSL.Add 0, 1
WSH.Echo oSL.ContainsKey(0)
-1
ContainsValue 方法:判斷有序列表是否包含指定值
Set oSL = CreateObject("System.Collections.SortedList")
WSH.Echo oSL.ContainsValue(1)
0
oSL.Add 0, 1
WSH.Echo oSL.ContainsValue(1)
-1
Equals 方法:判斷是否是同一個有序列表對象
Set oSL = CreateObject("System.Collections.SortedList")
Set oSL2 = oSL
Set oSL3 = oSL.Clone()
WSH.Echo oSL.Equals(oSL2), oSL.Equals(oSL3)
-1 0
GetByIndex 方法:獲得指定索引處的值
索引從 0
開始。
可配合 Count
屬性使用。
Set oSL = CreateObject("System.Collections.SortedList")
oSL(-1) = 111
oSL(0) = 222
oSL(1) = 333
WSH.Echo oSL.GetByIndex(0), oSL.GetByIndex(1), oSL.GetByIndex(2)
111 222 333
GetHashCode 方法:獲得對象的哈希值
Set oSL = CreateObject("System.Collections.SortedList")
Set oSL2 = oSL
Set oSL3 = oSL.Clone()
WSH.Echo oSL.GetHashCode(), oSL2.GetHashCode(), oSL3.GetHashCode()
54267293 54267293 18643596
GetKey 方法:獲得指定索引處的鍵
索引從 0
開始。
可配合 Count
屬性使用。
Set oSL = CreateObject("System.Collections.SortedList")
oSL(111) = -1
oSL(222) = 0
oSL(333) = 1
WSH.Echo oSL.GetKey(0), oSL.GetKey(1), oSL.GetKey(2)
111 222 333
GetKeyList 方法:獲得由鍵組成的列表
返回的列表可使用 Item
或預設屬性(效果相同)。
可配合有序列表的 Count
屬性使用。
Set oSL = CreateObject("System.Collections.SortedList")
For i = 0 To 9
oSL.Add i, CStr(i)
Next
Set oKL = oSL.GetKeyList()
WSH.Echo oKL.Item(0), oKL(1)
0 1
GetValueList 方法:獲得由值組成的列表
返回的列表可使用 Item
或預設屬性(效果相同)。
可配合有序列表的 Count
屬性使用。
Set oSL = CreateObject("System.Collections.SortedList")
For i = 0 To 9
oSL.Add i, CStr(i) & CStr(i)
Next
Set oVL = oSL.GetValueList()
WSH.Echo oVL.Item(0), oVL(1)
00 11
IndexOfKey 方法:返回鍵對應的索引
索引從 0
開始。
Set oSL = CreateObject("System.Collections.SortedList")
For i = -10 To 10
oSL.Add i, i
Next
WSH.Echo oSL.IndexOfKey(0)
10
IndexOfValue 方法:返回值對應的索引
索引從 0
開始。
Set oSL = CreateObject("System.Collections.SortedList")
For i = -10 To 10
oSL.Add i, i + 10
Next
WSH.Echo oSL.IndexOfValue(10)
10
Remove 方法:移除指定鍵對應的鍵值對
Set oSL = CreateObject("System.Collections.SortedList")
oSL.Add 1, 2
WSH.Echo oSL(1)
2
oSL.Remove 1
WSH.Echo TypeName(oSL(1))
Empty
RemoveAt 方法:移除指定索引對應的鍵值對
索引從 0
開始。
Set oSL = CreateObject("System.Collections.SortedList")
oSL.Add 1, 2
WSH.Echo oSL(1)
2
oSL.RemoveAt 0
WSH.Echo TypeName(oSL(1))
Empty
SetByIndex 方法:替換指定索引對應鍵值對的值
Set oSL = CreateObject("System.Collections.SortedList")
oSL.Add 1, 2
WSH.Echo oSL(1)
2
oSL.SetByIndex 0, -1
WSH.Echo oSL(1)
-1
ToString 方法:返回有序列表的類型
Set oSL = CreateObject("System.Collections.SortedList")
WSH.Echo oSL.ToString(), TypeName(oSL)
System.Collections.SortedList SortedList
TrimToSize 方法:將容量設置為與實際元素個數相同
Set oSL = CreateObject("System.Collections.SortedList")
oSL.Add 1, 1
WSH.Echo oSL.Count, oSL.Capacity
1 16
oSL.TrimToSize
WSH.Echo oSL.Count, oSL.Capacity
1 1