我工作的代码库在几个地方有类似于以下的代码:
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
我想知道
.ToArray(GetType(Integer))
有什么好处,因为省略它在运行时具有几乎相同的结果。那就是调用 For Each i In ints
。我看到的唯一区别是,如果 ArrayList
中包含 Integer 以外的其他类型,那么如果不调用 .ToArray(),则生成的错误消息会更有帮助如果我将在已指定类型的情况下执行
ToArray(type)
循环,为什么要在 ArrayList
上使用 For Each
? 最佳答案
通常,您可能不想这样做。调用 ToArray()
实际上会创建一个新的值数组。
这可能是有益的一个地方是,如果您的循环要修改 ArrayList
。在枚举它们时您不能修改大多数集合,因此您会得到一个异常(exception)。通过添加 ToArray
调用,您正在枚举集合的副本(作为数组),因此您可以修改原始集合。
请注意,一般情况下,如果是这种情况,我会使用 ToList()
,而不是 ToArray()
,因为它通常效率更高一些(通常会少分配一个内存)。我还建议对任何新代码使用 List(Of Integer)
而不是 ArrayList
,因为您可以获得类型安全。
关于.net - 为什么要调用 ArrayList.ToArray?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16594032/