标题: [原创] 在 VBScript 中使用哈希表(Hashtable) [打印本页]
作者: 老刘1号 时间: 2023-7-24 10:21 标题: 在 VBScript 中使用哈希表(Hashtable)
环境要求
- Windows XP 及以上。
- Windows 10 、 Windows 11 在 Windows 功能 中勾选 .NET Framework 3.5 (包括 .NET 2.0 和 3.0) 。
使用
创建一个 Hashtable 对象:- Set oHT = CreateObject("System.Collections.Hashtable")
复制代码
Count 属性:返回表中键值对的数量- Set oHT = CreateObject("System.Collections.Hashtable")
- WSH.Echo oHT.Count()
复制代码
复制代码
IsFixedSize 属性:哈希表是否具有固定大小
由于 VBS 无法调用构造函数,故只能创建动态大小的哈希表。
故会固定返回 False。- Set oHT = CreateObject("System.Collections.Hashtable")
- WSH.Echo oHT.IsFixedSize()
复制代码
复制代码
IsReadOnly 属性:哈希表是否只读
由于 VBS 无法调用构造函数,故只能创建可读写的哈希表。
故会固定返回 False。- Set oHT = CreateObject("System.Collections.Hashtable")
- WSH.Echo oHT.IsReadOnly()
复制代码
复制代码
IsSynchronized 属性:哈希表是否线程安全
由于 VBS 为单线程,该属性无意义。
会固定返回 False。- Set oHT = CreateObject("System.Collections.Hashtable")
- WSH.Echo oHT.IsSynchronized()
复制代码
复制代码
Item 属性:表示指定键对应的键值对- Set oHT = CreateObject("System.Collections.Hashtable")
- oHT.Item("key") = "value"
- WSH.Echo oHT.Item("key")
复制代码
复制代码
- Set oHT.Item("oRE") = New RegExp
- WSH.Echo TypeName(oHT.Item("oRE"))
复制代码
复制代码
Default 默认属性:表示指定键对应的键值对
同 Item 属性。- Set oHT = CreateObject("System.Collections.Hashtable")
- oHT("key") = "value"
- WSH.Echo oHT("key")
复制代码
复制代码
- Set oHT("oRE") = New RegExp
- WSH.Echo TypeName(oHT("oRE"))
复制代码
复制代码
Add 方法:新添键值对
若键已经存在会抛出错误。- Set oHT = CreateObject("System.Collections.Hashtable")
- oHT.Add "key", "value"
- WSH.Echo oHT("key")
复制代码
复制代码
- Set oHT = CreateObject("System.Collections.Hashtable")
- oHT.Add "duplicate", 0
- On Error Resume Next
- oHT.Add "duplicate", 1
- WSH.Echo Err.Number = 0
- Err.Clear
复制代码
复制代码
Clear 方法:移除表内所有键值对- Set oHT = CreateObject("System.Collections.Hashtable")
- oHT.Add "key", "value"
- oHT.Clear
- WSH.Echo oHT.Count
复制代码
复制代码
Clone 方法:创建哈希表的副本- Set oHT = CreateObject("System.Collections.Hashtable")
- Set oHT2 = oHT
- Set oHT3 = oHT.Clone
- oHT.Add "key", "value"
- WSH.Echo oHT.Count, oHT2.Count, oHT3.Count
复制代码
复制代码
Contains 方法:判断哈希表是否包含指定键- Set oHT = CreateObject("System.Collections.Hashtable")
- oHT.Add "key", "value"
- WSH.Echo oHT.Contains("key"), oHT.Contains("other")
复制代码
复制代码
ContainsKey 方法:判断哈希表是否包含指定键
同 Contains 方法。- Set oHT = CreateObject("System.Collections.Hashtable")
- oHT.Add "key", "value"
- WSH.Echo oHT.ContainsKey("key"), oHT.ContainsKey("other")
复制代码
复制代码
ContainsValue 方法:判断哈希表是否包含指定值- Set oHT = CreateObject("System.Collections.Hashtable")
- oHT.Add "key", "value"
- WSH.Echo oHT.ContainsValue("value"), oHT.ContainsValue("other")
复制代码
复制代码
Equals 方法:判断是否为同一哈希表- Set oHT = CreateObject("System.Collections.Hashtable")
- Set oHT2 = oHT
- Set oHT3 = oHT.Clone
- WSH.Echo oHT.Equals(oHT2), oHT.Equals(oHT3)
复制代码
复制代码
GetHashCode 方法:返回哈希表的哈希- Set oHT = CreateObject("System.Collections.Hashtable")
- Set oHT2 = oHT
- Set oHT3 = oHT.Clone
- WSH.Echo oHT.GetHashCode, oHT2.GetHashCode, oHT3.GetHashCode
复制代码
- 54267293 54267293 18643596
复制代码
Remove 方法:从哈希表中移除指定键对应的键值对
若键不存在,则什么也不做。- Set oHT = CreateObject("System.Collections.Hashtable")
- oHT.Add "key", "value"
- oHT.Remove "key"
- oHT.Remove "nothing"
- WSH.Echo oHT.Count
复制代码
复制代码
ToString 方法:返回哈希表的类型名- Set oHT = CreateObject("System.Collections.Hashtable")
- WSH.Echo oHT.ToString(), TypeName(oHT)
复制代码
- System.Collections.Hashtable Hashtable
复制代码
参考
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |