背景:

我刚遇到this question,让我了解了数组中的erase陈述。

我一直使用以下重置它们:

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


如果我擦除

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


最后,两个都重置变量。

题:
使用擦除语句真的值得吗?它是否比Redim.. As..更好地防止内存泄漏?是否有任何您可以回想起不这样做的情况?

最佳答案

如有疑问,请使用以下语义:


使用ReDim重新定义数组的维数
使用Erase取消分配数组


坚持这一点将使您的代码受益于更高的一致性,并使您的代码意图对读者/维护者/未来用户更加清晰。

09-25 20:40