我为什么要调用ArrayList.ToArray?

Dan*_*iel 3 .net vb.net arraylist

我工作的代码库在几个地方的代码类似于以下代码:

Dim i As Integer
Dim ints As New ArrayList
ints.Add(1)

'... lets say we add more Integers

For each i in ints.ToArray(GetType(Integer))
'Do something
Next
Run Code Online (Sandbox Code Playgroud)

我想知道.ToArray(GetType(Integer))从那以后在运行时几乎得到相同的结果,从中获得了什么好处.那是在呼唤For Each i In ints.我看到的唯一区别是,ArrayList如果你没有调用.ToArray(),如果结果错误消息中的某些类型不是Integer.

我为什么要使用ToArray(type)ArrayList,如果我会做一个For Each地方已经指定类型的循环?

Ree*_*sey 5

如果我要进行已指定类型的For Each循环,为什么我要在ArrayList上使用ToArray(type)?

通常,您可能不想这样做.调用ToArray()实际上会创建一个新的值数组.

这可能是有益的一个地方是你的循环将要修改ArrayList.枚举它们时无法修改大多数集合,因此您将获得异常.通过添加ToArray调用,您将枚举集合的副本(作为数组),以便您可以修改原始集合.

请注意,一般情况下,如果是这种情况,我会使用ToList(),而不是ToArray(),因为它通常更有效(通常少一个内存分配).我还建议使用List(Of Integer)而不是ArrayList任何新代码,因为你得到类型安全.