私はちょうどthis questionに出くわしたと私は配列では約eraseなステートメントを学びました。
私は常にそれらをリセットするには、次を使用している:私は終わりに消去
Sub TestWithEraseAndRedim()
Dim ExampleArray() As String
ReDim Preserve ExampleArray(1)
ExampleArray(1) = "yo"
MsgBox ExampleArray(1)
Erase ExampleArray
MsgBox ExampleArray(1) 'this confirms is reset!
ReDim ExampleArray(0) As String
MsgBox ExampleArray(1) 'this confirms is reset!
End Sub
でそれを行う場合
Sub TestWithRedimOnly()
Dim ExampleArray() As String
ReDim Preserve ExampleArray(1)
ExampleArray(1) = "yo"
MsgBox ExampleArray(1)
ReDim ExampleArray(0) As String
MsgBox ExampleArray(1) 'this confirms is reset!
End Sub
、両方の変数をリセットします。
質問: 消去文を使用するのは本当に価値がありますか?それだけではなく、メモリの漏れを防ぎますか?Redim.. As..
そんなことをしないことを思い出すことができるケースはありますか?
1つの違いは、redim a(0)の後も、a(0)に1つのインデックスを持つ割り付け配列が残っていることです。アレイを破壊するための消去が存在するので、もしあなたがしたいことがそうであれば、それはあなたが使うかもしれないものです。 –
消去を呼び出すのは本当に価値がありますか?私はそれを何も持たない1つのインデックスを持つ配列を意味し、配列は完全に破壊されてから再構築されます - 配列変数を使用したい場合 - – Sgdva
'Erase'はあなたの意図したとおりに 'ReDim ExampleArray(0)'を行いますたとえば、それは "より良い"ことを除き、入力して意図を明確にするのがより短い。個人的に私はそれを使用しない理由は見えません。 –