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

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/

10-13 03:11