VBScript: 配列を初期化する Erase

VBScriptで配列を初期化する場合は、Eraseステートメントを使用します。
Eraseステートメントは動的配列と静的配列によって動作が異なるため注意が必要です。

Eraseステートメントの書式は次の通りです。

書式
Erase 配列

Eraseステートメントで動的配列を初期化した場合は、 配列に割り当てられたメモリを解放します。
静的配列の場合は全ての要素が「空の文字列("")」になります。

それぞれの場合について見ていきます。

動的配列をEraseで初期化した場合

動的配列をEraseで初期化した場合は、 配列に割り当てられていたメモリを解放します。

Erase後にUbound(配列)を実行すると 「実行時エラー: インデックスが有効範囲にありません。: 'UBound'」 というエラーが発生します。

次のサンプルコードでは動的配列「arr」の初期化前の値を表示し、 Eraseで初期化した後に、 isArray 関数で配列として存在していることを確認しています。 そして最後にUbound関数を実行してエラーが発生しています。

Dim arr()

ReDim arr(2)
arr(0) = 1
arr(1) = 6
arr(2) = 10

WScript.Echo "要素数: " & UBound(arr) + 1

For i = 0 To UBound(arr)
	WScript.Echo arr(i)
Next

' 初期化
Erase arr

If IsArray(arr) Then
	WScript.Echo "True"
Else
	WScript.Echo "False"
End If

' Ubound()を実行するとエラーが発生する
WScript.Echo "要素数: " & UBound(arr) + 1
要素数: 3
1
6
10
True
実行時エラー: インデックスが有効範囲にありません。: UBound

静的配列をEraseで初期化した場合

静的配列をEraseで初期化した場合は、 すべての要素が空の文字列("")になります。

次のサンプルコードでは静的配列「arr」の初期化前と初期化後の 配列の内容を比べています。
要素数は変わりませんが、要素が空の文字列になっているのが確認できます。

Dim arr(2)

arr(0) = 1
arr(1) = 6
arr(2) = 10

WScript.Echo "要素数: " & UBound(arr) + 1

For i = 0 To UBound(arr)
	WScript.Echo arr(i)
Next

' 初期化
Erase arr

WScript.Echo "要素数: " & UBound(arr) + 1

For i = 0 To UBound(arr)
	WScript.Echo arr(i)
Next

If arr(0) = "" Then
	WScript.Echo "True"
Else
	WScript.Echo "False"
End If
要素数: 3
1
6
10
要素数: 3



True
VBScript入門