據我所知,字典對象密鑰是通過僅僅引用它來創建的,就像它存在一樣。
wscript.echo objDic.Item("test") 'Creates the key whether it exists or not
wscript.echo objDic.Exists("test") 'Will now return true
下面是一些可以嘗試證明/測試我的理論的代碼。我通常使用MsgBox而不是WScript.Echo,就像你在代碼中看到的那樣。
dim objDic, brk
brk = vbcrlf & vbcrlf
set objDic = createobject("scripting.dictionary")
objDic.add "test","I have not been deleted"
wscript.echo "objDic.Exists(""test""): " & brk & objDic.item("test")
WScript.Echo "Now going to Remove the key named: test"
objDic.remove "test"
MsgBox "objDic.Exists(""test""): " & brk & objDic.Exists("test") 'Returns False
wscript.echo "objDic.item(""test""): " & brk & objDic.item("test") 'Shows Blank, Creates the key again with a blank value
wscript.echo "objDic.item(""NeverAdded""): " & brk & objDic.item("NeverAdded") 'Also shows blank, does not return an error
MsgBox "objDic.Exists(""test""): " & brk & objDic.Exists("test") 'Returns True
來源
2012-05-07 02:23:03
HK1
絕對正確。這是[官方文檔](http://msdn.microsoft.com/en-us/library/84k9x471%28VS.84%29.aspx),其中提到,「如果* key *在嘗試返回時未找到現有項目,將創建一個新的*鍵*並將其相應項目留空。「 –
在新的答案的提示下,在重新回顧這個問題時,我對如何創建一個不存在的密鑰是有幫助的,就像我上次看這個問題時一樣困惑。任何人都可以解釋背後的原因?我只能假設這是根植於comp。 SCI。有關字典對象的理論? – user66001
@ user66001作爲一個實用的程序員,我不太擔心爲什麼像這樣設計它的方式,並且更多地擔心記住這些怪癖。 – HK1