使用 Dictionary 对象的一个潜在的问题是,你如果去访问一个在 Dictionary 中不存在的元素的时候,它不产生一个错误,而是将这个不存在的元素添加到 Dictionary 中去了。看下面的脚本示例,它创建了一个 Dictionary,添加了三对 key-item,然后尝试去回显不存在的item,printer 4:
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Printer 1", "Printing"
objDictionary.Add "Printer 2", "Offline"
objDictionary.Add "Printer 3", "Printing"
Wscript.Echo objDictionary.Item("Printer 4")
当脚本尝试去回显不存在的 item 的时候,没有任何运行错误发生,而是创建了一个新的 key,printer 4,并被添加到了 Dictionary 中,它的对象的 item 的值是 null。
为了避免这样的错误发生,在访问 item 的值的时候,去检查它是否存在。
Manipulating Keys and Items in a Dictionary
作为 Dictionary 本身而言,它的用途很少。一个 Dictionary 只有在访问它的 item,列举它的item,或者修改它的 item 的时候,才变得有用。在你创建了一个 Dictionary 之后,你可能作如下的一些事情:
确定在这个 dictionary 中有多少对 key-item 对列举出在 dictionary 的 keys 和或者 item。
决定在 Dictionary 是否存在特定的 key
修改在 Dictionary 中的 key 或者 item 的值
从 Dictionary 中移除特定 key-item 对。
所有这些任务都可以通过在 RunTime Library 中提供的属性方法来实现。
键值对
和其它的许多集合一样,Dictionary 有一个 count 属性用来返回在这个集合中的 key-item 对的数量。下面的脚本创建了一个 Dictionary 对象,然后添加三个 key-item 对,回显这个Dictionary 的 count 属性的值。
Set objDictionary = CreateObject(“Scripting.Dictionary”)
objDictionary.Add “Printer 1”, “Printing”
objDictionary.Add “Printer 2”, “Offline”
objDictionary.Add “Printer 3”, “Printing”
Wscript.Echo objDictionary.Count
当脚本运行的时候,会显示一个值 3
Dictionary 被设计成用来暂时的存储信息。任何存在 Dictionary 中的信息都是作为临时用的,没有用来长期存储的。它一般是用来临时放信息,然后在脚本中在重新调用他们。例如,你有个存储了服务器名称清单的 Dictionary,然后在后面的脚本中连到这些服务器上,并且获得相应的信息。结果是,你每次连接到一个服务器的时候,你都必须去调用 Dictionary 中的信息。
Keys items 的方法可以用来返回他们的组成集合,或者的单独的返回或者全部返回在Dictionary 中的 item-key 的信息。在你用了其中的一个方法之后,你可以用 For Each 循环列举除在数组中所有的 key-item。
下面的脚本创建一个简单的 Dictionary,添加三对 keys-item,在这个 Dictionary 创建结束之后,脚本用 keys 方法来列举出所有的 keys,然后用 items 方法来返回所有的 items
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "Printer 1", "Printing"
objDictionary.Add "Printer 2", "Offline"
objDictionary.Add "Printer 3", "Printing"
colKeys = objDictionary.Keys
For Each strKey in colKeys
Wscript.Echo strKey
Next
colItems = objDictionary.Items
For Each strItem in colItems
Wscript.Echo strItem
Next
当脚本在 CScript 下运行的时候,命令行的信息如下:
Printer 1
Printer 2
Printer 3
Printing
Offline
Printing
为了显示特定的 item 的值,用 item 方法,如下代码显示了 key 是 printer 3 的item 的值:
Wscript.Echo objDictionary.Item("Printer 3")