清除字符串数组的最佳方法是什么?
答案 0 :(得分:28)
错误的方式:
myArray = Nothing
仅将指向数组的变量设置为空,但实际上并未清除数组。指向同一数组的任何其他变量仍将保留该值。因此有必要清除阵列。
正确的方式
Array.Clear(myArray,0,myArray.Length)
答案 1 :(得分:6)
当然还有使用Erase关键字的VB方式:
Dim arr() as String = {"a","b","c"}
Erase arr
答案 2 :(得分:2)
根据您的需要:
最后可能是最慢的,但如果你不想要一个新阵列,那么这只是选项。
答案 3 :(得分:2)
如果你需要做清楚的事情,你可能需要像List(Of String)
这样的集合而不是数组。
答案 4 :(得分:1)
redim arr(1,1,1,1) 然后 redim(z,x,y,v)到你的尺寸
答案 5 :(得分:0)
如果您需要使用空字符串或不等于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
答案 6 :(得分:0)
这是我用来清除字符串数组内容的简单调用:
def h[F[_], A](v: F[A]) = ???
然后只需调用:
Public Sub ClearArray(ByRef StrArray As String())
For iK As Int16 = 0 To StrArray.Length - 1
StrArray(iK) = ""
Next
End Sub