本帖最后由 老刘1号 于 2023-7-24 18:13 编辑
环境要求
- Windows XP 及以上。
- Windows 10 、 Windows 11 在 Windows 功能 中勾选 .NET Framework 3.5 (包括 .NET 2.0 和 3.0) 。
前置知识WSH.Echo Empty = EmptyCOPY
-1COPY
WSH.Echo Null = NullCOPY
nullCOPY
WSH.Echo New RegExp Is New RegExpCOPY
0COPY
| Set oRE = New RegExp | | WSH.Echo oRE Is oRECOPY |
-1COPY
WSH.Echo CreateObject("Scripting.FileSystemObject") Is CreateObject("Scripting.FileSystemObject")COPY
0COPY
| Set oFS = CreateObject("Scripting.FileSystemObject") | | WSH.Echo oFS Is oFSCOPY |
-1COPY 下面两个返回值出现的原因是浮点误差:WSH.Echo 0.1 + 0.2 = 0.3COPY
0COPY
WSH.Echo 100000000000000000000000 = 100000000000000000000001COPY
-1COPY 使用
创建一个 SortedList 对象:Set oSL = CreateObject("System.Collections.SortedList")COPY Capacity 属性:表示有序列表目前的容量 | Set oSL = CreateObject("System.Collections.SortedList") | | WSH.Echo oSL.CapacityCOPY |
0COPY
| oSL.Add 1, 1 | | WSH.Echo oSL.CapacityCOPY |
16COPY
| oSL.Capacity = 1 | | WSH.Echo oSL.CapacityCOPY |
1COPY Count 属性:返回有序列表包含元素的个数 | Set oSL = CreateObject("System.Collections.SortedList") | | WSH.Echo oSL.Count()COPY |
0COPY
| oSL.Add 1, 1 | | WSH.Echo oSL.Count()COPY |
1COPY IsFixedSize 属性:是否具有固定大小
会返回 False 。 | Set oSL = CreateObject("System.Collections.SortedList") | | WSH.Echo oSL.IsFixedSize()COPY |
0COPY IsReadOnly 属性:是否为只读
会返回 False 。 | Set oSL = CreateObject("System.Collections.SortedList") | | WSH.Echo oSL.IsReadOnly()COPY |
0COPY IsSynchronized 属性:访问是否同步(是否线程安全)
由于 VBScript 是单线程的,该属性无意义。
会返回 False 。 | Set oSL = CreateObject("System.Collections.SortedList") | | WSH.Echo oSL.IsSynchronized()COPY |
0COPY Item 属性:表示有序列表中指定键对应的值
参数:键(整数)。 | Set oSL = CreateObject("System.Collections.SortedList") | | WSH.Echo TypeName(oSL.Item(0))COPY |
EmptyCOPY
WSH.Echo oSL.Contains(0)COPY
0COPY
| oSL.Item(0) = 2333 | | WSH.Echo oSL.Contains(0), oSL.Item(0)COPY |
-1 2333COPY
| Set oRE = New RegExp | | Set oSL.Item(0) = oRE | | Set oSL.Item(1) = oRE | | Set oSL.Item(-1) = oRECOPY |
WSH.Echo oSL.Item(0) Is oRE, oSL.Item(1) Is oRE, oSL.Item(-1) Is oRECOPY
-1 -1 -1COPY Default 默认属性:表示有序列表中指定键对应的值
同 Item 属性。 | Set oSL = CreateObject("System.Collections.SortedList") | | WSH.Echo TypeName(oSL(0))COPY |
EmptyCOPY
WSH.Echo oSL.Contains(0)COPY
0COPY
| oSL(0) = 2333 | | WSH.Echo oSL.Contains(0), oSL(0)COPY |
-1 2333COPY
| Set oRE = New RegExp | | Set oSL(0) = oRE | | Set oSL(1) = oRE | | Set oSL(-1) = oRECOPY |
WSH.Echo oSL(0) Is oRE, oSL(1) Is oRE, oSL(-1) Is oRECOPY
-1 -1 -1COPY Add 方法:添加新的键值对
参数:键(整数)、值。
若键已经存在,则会抛出异常。 | Set oSL = CreateObject("System.Collections.SortedList") | | For i = 0 To 9 | | oSL.Add i, CStr(i) | | Next | | WSH.Echo oSL.Count()COPY |
10COPY Clear 方法:清空有序列表 | Set oSL = CreateObject("System.Collections.SortedList") | | oSL.Add 0, 0 | | WSH.Echo oSL.Count()COPY |
1COPY
| oSL.Clear | | WSH.Echo oSL.Count()COPY |
0COPY 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()COPY |
1 1 0COPY Contains 方法:判断有序列表是否包含指定键 | Set oSL = CreateObject("System.Collections.SortedList") | | WSH.Echo oSL.Contains(0)COPY |
0COPY
| oSL.Add 0, 1 | | WSH.Echo oSL.Contains(0)COPY |
-1COPY ContainsKey 方法:判断有序列表是否包含指定键
同 Contains 方法。 | Set oSL = CreateObject("System.Collections.SortedList") | | WSH.Echo oSL.ContainsKey(0)COPY |
0COPY
| oSL.Add 0, 1 | | WSH.Echo oSL.ContainsKey(0)COPY |
-1COPY ContainsValue 方法:判断有序列表是否包含指定值 | Set oSL = CreateObject("System.Collections.SortedList") | | WSH.Echo oSL.ContainsValue(1)COPY |
0COPY
| oSL.Add 0, 1 | | WSH.Echo oSL.ContainsValue(1)COPY |
-1COPY Equals 方法:判断是否是同一个有序列表对象 | Set oSL = CreateObject("System.Collections.SortedList") | | Set oSL2 = oSL | | Set oSL3 = oSL.Clone() | | WSH.Echo oSL.Equals(oSL2), oSL.Equals(oSL3)COPY |
-1 0COPY 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)COPY |
111 222 333COPY GetHashCode 方法:获得对象的哈希值 | Set oSL = CreateObject("System.Collections.SortedList") | | Set oSL2 = oSL | | Set oSL3 = oSL.Clone() | | WSH.Echo oSL.GetHashCode(), oSL2.GetHashCode(), oSL3.GetHashCode()COPY |
54267293 54267293 18643596COPY 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)COPY |
111 222 333COPY 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)COPY |
0 1COPY 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)COPY |
00 11COPY IndexOfKey 方法:返回键对应的索引
索引从 0 开始。 | Set oSL = CreateObject("System.Collections.SortedList") | | For i = -10 To 10 | | oSL.Add i, i | | Next | | WSH.Echo oSL.IndexOfKey(0)COPY |
10COPY IndexOfValue 方法:返回值对应的索引
索引从 0 开始。 | Set oSL = CreateObject("System.Collections.SortedList") | | For i = -10 To 10 | | oSL.Add i, i + 10 | | Next | | WSH.Echo oSL.IndexOfValue(10)COPY |
10COPY Remove 方法:移除指定键对应的键值对 | Set oSL = CreateObject("System.Collections.SortedList") | | oSL.Add 1, 2 | | WSH.Echo oSL(1)COPY |
2COPY
| oSL.Remove 1 | | WSH.Echo TypeName(oSL(1))COPY |
EmptyCOPY RemoveAt 方法:移除指定索引对应的键值对
索引从 0 开始。 | Set oSL = CreateObject("System.Collections.SortedList") | | oSL.Add 1, 2 | | WSH.Echo oSL(1)COPY |
2COPY
| oSL.RemoveAt 0 | | WSH.Echo TypeName(oSL(1))COPY |
EmptyCOPY SetByIndex 方法:替换指定索引对应键值对的值 | Set oSL = CreateObject("System.Collections.SortedList") | | oSL.Add 1, 2 | | WSH.Echo oSL(1)COPY |
2COPY
| oSL.SetByIndex 0, -1 | | WSH.Echo oSL(1)COPY |
-1COPY ToString 方法:返回有序列表的类型 | Set oSL = CreateObject("System.Collections.SortedList") | | WSH.Echo oSL.ToString(), TypeName(oSL)COPY |
System.Collections.SortedList SortedListCOPY TrimToSize 方法:将容量设置为与实际元素个数相同 | Set oSL = CreateObject("System.Collections.SortedList") | | oSL.Add 1, 1 | | WSH.Echo oSL.Count, oSL.CapacityCOPY |
1 16COPY
| oSL.TrimToSize | | WSH.Echo oSL.Count, oSL.CapacityCOPY |
1 1COPY 参考
|