VBScriptにおける、Dictionaryで存在しないキーを参照した際、勝手にキーが作成されてしまうバグ?のようなものがありますので、事象と対策方法を記載しています。
事象
下記の例では、1回目の要素数の確認では「0」と表示され、
2回目の要素数の確認では「1」と表示されます。
要素の確認(キーの参照)を行っただけで、1つ要素が追加されていることが分かります。
Option Explicit ' 連想配列を使用するための宣言 Dim dic Set dic = CreateObject("Scripting.Dictionary") ' 要素数の確認(1回目) MsgBox(dic.Count) ' 要素の確認 MsgBox(dic("りんご")) ' 要素数の確認(2回目) MsgBox(dic.Count)
対策
下記のように、キーの参照を行う際、「dic.Exists(“りんご”)」(キーの存在チェック)を使用し、事前に確認しておくことで、存在しないキーへの参照を防ぐことが可能です。
例では、キーが存在する場合のみ、キーの参照を行っていますが、キーが存在しないので、要素数の確認では、いずれも「0」と表示されます。
Option Explicit ' 連想配列を使用するための宣言 Dim dic Set dic = CreateObject("Scripting.Dictionary") ' 要素数の確認(1回目) MsgBox(dic.Count) ' 要素の確認 If(dic.Exists("りんご"))Then MsgBox(dic("りんご")) End If ' 要素数の確認(2回目) MsgBox(dic.Count)
リンク
コメント