首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我要调用ArrayList.ToArray?

为什么我要调用ArrayList.ToArray?
EN

Stack Overflow用户
提问于 2013-05-17 01:42:09
回答 5查看 642关注 0票数 3

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

代码语言:javascript
运行
复制
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中存在整数以外的其他类型,如果不调用.ToArray(),则产生的错误消息会更有帮助

如果我要做一个已经指定了类型的For Each循环,为什么还要在ArrayList上使用For Each

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-05-17 01:46:54

如果我要执行一个已经指定了类型的

循环,为什么要在ArrayList上使用ToArray(类型)呢?

一般来说,您可能不想这样做。调用ToArray()实际上会创建一个新的值数组。

如果您的循环要修改ArrayList,那么这样做可能会有好处。你不能在枚举时修改大多数集合,所以你会得到一个异常。通过添加ToArray调用,可以枚举集合的副本(作为数组),因此可以修改原始集合。

注意,一般来说,如果是这样的话,我会使用ToList(),而不是ToArray(),因为它通常会更高效一些(通常会减少一个内存分配)。我还建议在任何新代码中使用List(Of Integer)而不是ArrayList,因为这样可以保证类型安全。

票数 5
EN

Stack Overflow用户

发布于 2013-05-17 01:48:35

您不需要在For each循环中的ArrayList上调用ToArrayi已经声明为Integer,因此将自动为您执行类型转换。

有时,您可能需要对查询结果调用数组,以便将数据复制到内存中。它的一个优点是将数据库查询的结果复制到内存中,因为您可以更快地关闭连接。此外,当查询引用已修改的变量时,或者当多次生成IEnumerable的代价很高时,调用ToList可以帮助您。

票数 2
EN

Stack Overflow用户

发布于 2013-05-17 01:53:29

在该ArrayList上调用.ToArray()有两个原因:

  1. ,因此您不需要在ArrayList中强制转换项。数组是强类型的,因此将它们放在第一位意味着编译器知道数组列表中的所有内容都是整数。
  2. ,这样您就可以将数组列表传递给需要数组作为参数的方法。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16594032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档