【VBScript】連想配列 – Dictionary 存在しないキーの参照時に勝手にキーが作成されてしまう


この記事はプロモーションを含みます。

ホーム > VBScript 逆引きリファレンス

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)

コメント

タイトルとURLをコピーしました