如何检测Dictionary中因误引用新增的Empty值项?
解决Dictionary误添加Empty键值的问题
1. 根本避免误添加:先检查键是否存在
VBScript的Dictionary对象自带Exists方法,专门用于判断键是否存在。访问键之前先调用这个方法,就能彻底防止误引用不存在的键导致自动添加空值项:
dictVar("Happy") = 23 dictVar("Lucky") = 666 ' 先验证键存在,再执行判断逻辑 If dictVar.Exists("Oopsie") Then If dictVar("Oopsie") = 23 Then 'Do Something End If End If
这样就不会凭空多出值为Empty的"Oopsie"键。
2. 检测已存在的Empty值
如果已经出现误添加的Empty值键,可通过IsEmpty函数检测对应值——必须先判断键存在,否则会再次触发自动添加逻辑:
If dictVar.Exists("Oopsie") Then If IsEmpty(dictVar("Oopsie")) Then ' 该键对应的值为Empty,大概率是误添加导致 ' 可选择删除该键:dictVar.Remove("Oopsie") End If End If
你之前用IsEmpty检测失败,大概率是因为没先判断键是否存在,直接调用IsEmpty(dictVar("Oopsie"))时又自动创建了新键,导致逻辑混乱。
补充说明
IsNothing仅用于检测对象是否未实例化(比如Set obj = Nothing的场景),对Dictionary里的Empty值无效,因此用它检测必然失败。- 无法区分“用户主动设置的Empty值”和“误引用添加的Empty值”,两者在Dictionary中的存储完全一致,所以最可靠的方式还是从源头避免误添加。
内容的提问来源于stack exchange,提问作者NewbieBAT
相关产品推荐
相关产品推荐

