清空一个字符串数组的最佳方法是什么?
错误的方法:
myArray = Nothing
只是将指向数组的变量设置为 null,但并没有真正地清空数组。任何指向同一数组的其他变量仍将保留该值。因此,有必要清空整个数组。
正确的方式:
Array.Clear(myArray,0,myArray.Length)
Dim arr() as String = {"a","b","c"}
Erase arr
根据您的需求:
最后一种可能是最慢的,但如果您不想要一个新的数组,那么这是唯一的选择。
List(Of String)
这样的集合,而不是数组。redim arr(1,1,1,1) 然后 redim (z,x,y,v) 根据你的需求调整数组维度
Public Sub ClearArray(ByRef StrArray As String())
For iK As Int16 = 0 To StrArray.Length - 1
StrArray(iK) = ""
Next
End Sub
ClearArray(myLocalArray)
如果您需要使用空字符串或其他不等于Nothing/Null的值重新初始化,您可以使用扩展方法进一步操作:
Option Strict On : Option Explicit On : Option Infer On
...
Public Delegate Sub ArrayForAllDelegate(Of T)(ByRef message As T)
<Extension>
Public Function ForAll(Of T)(ByRef self As T(), f As ArrayForAllDelegate(Of T)) As T()
Dim i = 0
While i < self.Length
f(self(i))
i += 1
End While
Return self
End Function
然后是你的初始化代码:
Dim a = New String(3 - 1) {"a", "b", "c"}
...
a.ForAll(Sub(ByRef el) el = "") 'reinitialize the array with actual empty strings
Redim myarray(-1)