Por lo que puedo decir, una Clave de objeto de diccionario se crea simplemente haciendo referencia a ella como si existiera.
wscript.echo objDic.Item("test") 'Creates the key whether it exists or not
wscript.echo objDic.Exists("test") 'Will now return true
Aquí hay algo más de código se puede tratar de probar/prueba mi teoría. Normalmente uso MsgBox en lugar de WScript.Echo, como verá en mi código.
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
Absolutamente correcto. Aquí está la [documentación oficial] (http://msdn.microsoft.com/en-us/library/84k9x471%28VS.84%29.aspx), que menciona, "Si la * clave * no se encuentra al intentar devolver un elemento existente, se crea una nueva * clave * y su elemento correspondiente se deja vacío. " –
Impulsado por la nueva respuesta, al volver a consultar esta pregunta, estoy tan confundido como la creación de una clave, si no existe, es útil, como lo fue la última vez que vi esta pregunta. ¿Alguien puede explicar las razones detrás de esto? Solo puedo suponer que esto está enraizado en comp. sci. teorías sobre objetos de diccionario? – user66001
@ user66001 Como programador pragmático, me preocupa menos sobre por qué algo así se diseña de la manera que es y me preocupo más por recordar este tipo de caprichos. – HK1